Проблема подключения к postgres с модулем базы данных Kohana 3 на OS X Snow Leopard - PullRequest
0 голосов
/ 26 мая 2010

правки / дополнения внизу ...

Окружающая среда:

Mac OS X 10.6 Snow Leopard
PHP 5.3
Кохана 3.0.4

Когда я пытаюсь настроить и использовать соединение с базой данных postgresql на localhost, я получаю следующую ошибку:

ErrorException [Предупреждение]: mysql_connect (): [2002] Нет такого файла или каталога (пытается подключиться через unix: ///var/mysql/mysql.sock)

Вот конфигурация базы данных в /modules/database/config/database.php (обратите внимание на третий экземпляр с именем '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,
),
);

А вот код для создания экземпляра базы данных, создания запроса и его выполнения:

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

Я продолжаю исследовать решение этой ошибки, но подумал, что хотел бы спросить, нашел ли кто-нибудь еще решение. Любые идеи приветствуются.

Еще одно замечание: я знаю, что моя сборка PHP может получить доступ к этой базе данных postgresql, поскольку я могу управлять этой базой данных с помощью phpPgAdmin. Но мне еще предстоит определить, что phpPgAdmin делает по-другому для подключения к БД, чем то, что пытается сделать Kohana 3.

Bart

///////////// EDIT ONE /////////////

На основании комментария Мэтта я изменил следующее в конфигурации экземпляра базы данных pgsqltest.

от

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

до

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

Я также изменил выполнение запроса.

от

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

до

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

Теперь я получаю следующую ошибку

PDOException [0]: не удалось найти драйвер

Я не уверен, идет ли речь о прогрессе или нет, но это больше информации для обмена.

1 Ответ

1 голос
/ 26 мая 2010

Мой первый комментарий заключается в том, что вы настроили Kohana на использование mysql 'type' => 'mysql',. Попробуйте обновить это сейчас и вернитесь к нам.

...