2010-05-26 11 views
0

Edits/ajouts au fond ...Problème de connexion à postgres avec le module de base de données Kohana 3 sur OS X Snow Leopard

Environnement:

Mac OS X 10.6 Snow Leopard
PHP 5.3
Kohana 3.0. 4

Lorsque je tente de configurer et d'utiliser une connexion à une base de données postgresql sur localhost je reçois l'erreur suivante:

ErrorException [ Warning ]: mysql_connect(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock)

Voici la configuration de la base de données dans /modules/database/config/database.php (notez la troisième instance nommée « pgsqltest »)

return array 
(
'default' => array 
(
    'type'  => 'mysql', 
    'connection' => array(
     /** 
     * The following options are available for MySQL: 
     * 
     * string hostname 
     * string username 
     * string password 
     * boolean persistent 
     * string database 
     * 
     * Ports and sockets may be appended to the hostname. 
     */ 
     'hostname' => 'localhost', 
     'username' => FALSE, 
     'password' => FALSE, 
     'persistent' => FALSE, 
     'database' => 'kohana', 
    ), 
    'table_prefix' => '', 
    'charset'  => 'utf8', 
    'caching'  => FALSE, 
    'profiling' => TRUE, 
), 
'alternate' => array(
    'type'  => 'pdo', 
    'connection' => array(
     /** 
     * The following options are available for PDO: 
     * 
     * string dsn 
     * string username 
     * string password 
     * boolean persistent 
     * string identifier 
     */ 
     'dsn'  => 'mysql:host=localhost;dbname=kohana', 
     'username' => 'root', 
     'password' => 'r00tdb', 
     'persistent' => FALSE, 
    ), 
    'table_prefix' => '', 
    'charset'  => 'utf8', 
    'caching'  => FALSE, 
    'profiling' => TRUE, 
), 
'pgsqltest' => array(
    'type'  => 'pdo', 
    'connection' => array(
     /** 
     * The following options are available for PDO: 
     * 
     * string dsn 
     * string username 
     * string password 
     * boolean persistent 
     * string identifier 
     */ 
     'dsn'  => 'mysql:host=localhost;dbname=pgsqltest', 
     'username' => 'postgres', 
     'password' => 'dev1234', 
     'persistent' => FALSE, 
    ), 
    'table_prefix' => '', 
    'charset'  => 'utf8', 
    'caching'  => FALSE, 
    'profiling' => TRUE, 
), 
); 

Et voici le code pour créer l'instance de base de données, créez une requête et exécuter la requête:

$pgsqltest_db = Database::instance('pgsqltest'); 
$query = DB::query(Database::SELECT, 'SELECT * FROM test')->execute(); 

Je continue à la recherche d'une solution pour cette erreur, mais a pensé que je demanderais de voir si quelqu'un d'autre a déjà trouvé une solution. Toutes les idées sont les bienvenues.

Une autre note est que je sais que mon build de PHP peut accéder à cette base de données postgresql car je suis capable de gérer la base de données en utilisant phpPgAdmin. Mais je dois encore déterminer ce que phpPgAdmin fait différemment pour se connecter à la base de données que ce que Kohana 3 tente de faire.

Bart

///////////// EDIT UN /////////////

Basé sur le commentaire de Matt J'ai changé le suivant la configuration de l'instance de base de données 'pgsqltest'.

de

'dsn'  => 'mysql:host=localhost;dbname=pbeeep', 

à

'dsn'  => 'pgsql:host=localhost;dbname=pbeeep', 

J'ai aussi changé l'exécution de la requête.

de

$query = DB::query(Database::SELECT, 'SELECT * FROM test')->execute(); 

à

$query = DB::query(Database::SELECT, 'SELECT * FROM test')->execute($pgsqltest_db); 

Maintenant, j'obtiens l'erreur suivante

PDOException [ 0 ]: could not find driver

Je ne sais pas si cela est un progrès ou non mais il est plus d'information à partager .

Répondre

1

Mon premier commentaire est que vous avez configuré Kohana pour utiliser mysql 'type' => 'mysql',. Essayez de mettre à jour cela pour le moment et revenez nous voir.

+0

Salut Matt, merci pour votre réponse rapide. Oui, l'instance de base de données par défaut a un type de 'mysql'. Cependant, je pense que je me connecte avec la troisième instance de base de données définie dans la configuration ci-dessus appelée 'pgsqltest'. Pour cette instance, le type est défini comme 'pdo'. J'ai essayé de changer la configuration par défaut pour être ma connexion pdo et cela échoue aussi bien. Je peux publier cette configuration si vous le souhaitez. –

+0

Huzah! On devrait faire défiler avant de commenter. Je m'excuse. Avez-vous les pilotes OSX PHP PGSQl installés? Je crois que http://www.php.net/manual/en/ref.pdo-pgsql.php a plus d'infos et 'phpinfo()' devrait vous le dire. –

+0

Matt, sur place. Je suis actuellement en train de rechercher pourquoi je n'ai pas ces pilotes installés. Je n'ai actuellement que ces pilotes installés en fonction de phpinfo() - mysql, sqlite, sqlite2. Plus à venir ... –