Драйвер базы данных CodeIgniter PDO не работает

Я пытаюсь использовать драйвер 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'), ..... ..... );