правки / дополнения внизу ...
Окружающая среда:
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]: не удалось найти драйвер
Я не уверен, идет ли речь о прогрессе или нет, но это больше информации для обмена.