Я пытаюсь использовать драйвер PDO MySQL в приложении CodeIgniter. Это моя конфигурация базы данных:
$active_group = 'default'; $active_record = TRUE; $db['default']['hostname'] = 'localhost'; $db['default']['username'] = 'root'; $db['default']['password'] = ''; $db['default']['database'] = 'testdatabase'; $db['default']['dbdriver'] = 'pdo'; $db['default']['dbprefix'] = ''; $db['default']['pconnect'] = TRUE; $db['default']['db_debug'] = TRUE; $db['default']['cache_on'] = FALSE; $db['default']['cachedir'] = ''; $db['default']['char_set'] = 'utf8'; $db['default']['dbcollat'] = 'utf8_general_ci'; $db['default']['swap_pre'] = ''; $db['default']['autoinit'] = TRUE; $db['default']['stricton'] = FALSE;
Тем не менее, я получаю эту ошибку при загрузке контроллера:
Неустранимая ошибка: исключить исключение «PDOException» с сообщением «недопустимое имя источника данных» в C: \ xampp \ htdocs \ testsite \ system \ database \ drivers \ pdo \ pdo_driver.php: 114
Я проверил источник данных, используя die($this->hostname);
в pdo_driver.php
и это выходит как:
localhost;dbname=testdatabase
поэтому он получает правильное имя базы данных. База данных существует, и у меня есть MySQL.
Что здесь может быть не так? Спасибо.
Это не должно быть так.
localhost;dbname=testdatabase
должно быть
mysql:dbname=testdatabase;host=localhost;
В файле /application/config/database.php, где
$db['default']['hostname'] = 'localhost';
должно быть
$db['default']['hostname'] = 'mysql:host=localhost';
localhost или хост вашей базы данных.
Для драйвера PDO требуется полная строка DSN. Строка вроде этого
'dsn' = 'mysql:host=localhost;dbname=databasename';
когда вы используете эту строку, вы должны удалить значение host и databasename из массива. Я думаю, что следующий пример дает вам представление.
$db['default'] = array( 'dsn' => 'mysql:host=localhost;dbname=codeigniter3', 'hostname' => '', 'username' => 'root', 'password' => '', 'database' => '', 'dbdriver' => 'pdo', 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => TRUE, 'cache_on' => FALSE, 'cachedir' => '', 'char_set' => 'utf8', 'dbcollat' => 'utf8_general_ci', 'swap_pre' => '', 'encrypt' => FALSE, 'compress' => FALSE, 'stricton' => FALSE, 'failover' => array(), 'save_queries' => TRUE );
благодаря
Согласно странице конфигурации базы данных CodeIgniter,
Для драйвера PDO вы должны изменить « hostname => 'localhost'
»на« 'hostname' => mysql:host=localhost
», как 'hostname' => mysql:host=localhost
ниже:
$db['default'] = array( 'dsn' => '', 'hostname' => 'mysql:host=localhost', 'username' => 'root', 'password' => '', 'database' => 'database_name', 'dbdriver' => 'pdo', 'dbprefix' => '', 'pconnect' => FALSE, 'db_debug' => (ENVIRONMENT !== 'production'), ..... ..... );