Próbuję użyć sterownika MySQL PDO w mojej aplikacji CodeIgniter. To jest mój config bazy danych:Nie działa sterownik bazy danych kodu PDI 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;
Jednak dostaję ten błąd, gdy załadować Kontroler:
Fatal error: Uncaught exception 'PDOException' with message 'invalid data source name' in C:\xampp\htdocs\testsite\system\database\drivers\pdo\pdo_driver.php:114
Sprawdziłem źródła danych przy użyciu die($this->hostname);
w pdo_driver.php
i wychodzi jako :
localhost;dbname=testdatabase
, więc otrzymuje poprawną nazwę bazy danych. Baza danych istnieje i mam uruchomiony MySQL.
Co może być nie tak? Dziękuję Ci.
Sidenote: Niedawno przeczytałem changelog dla nowej wersji (2.1.1) i istnieją pewne poprawki dotyczące sterownika PDO. Możesz to sprawdzić: –
Martin, otrzymuję podobny błąd: 'Błąd krytyczny: Niepowodzenie wyjątku 'PDOException' z komunikatem 'could not find driver' in ... ((kilka baz danych i główny katalog/pliki na liście)). .. syetem/database/drivers/pdo/pdo_driver.php na linii 114' Jestem na tyle nowy, że nie mogę nawet powiedzieć, czy twój hack pomoże mi. Gdzie i co ** dokładnie ** edytowałeś w '.../system/database/drivers/pdo/pdo_driver.php'? Jestem dość początkującym na tematy związane z konfiguracją. Wydaje mi się dziwne, że włamanie do pliku systemowego jest potrzebne, aby PDO działało w CI v.2.1.1, czyż nie? Dlaczego (w większości przypadków) inni nie potrzebują hacku, o którym wspomniałeś? – govinda
@govinda, Zrobiłem mój w linii 81, zaraz po 'else {...}' w konstruktorze klasy. Wydaje się dziwne, że musisz to zhackować, ale od czasu mojej poprawki nie znalazłem nic złego. –