Kohana v.2.3.4 i SQlite
Ostatnio miałem okazje pisać stronę opartą o KohanaPHP i SQlite. Początkowo wydawało się że nie powinno to stanowić żadnego problemu ponieważ kohana obsługuje tą bazę.
Niestety dokumentacja kohany pokazuje jedynie jak ustawić połączenie z MySQL.
Z tego co udało się wygooglować ustaliłem że kohana używa PDO do łączenia się z SQlite, niektóre strony wspominały że należy dodać parametr 'dsn' do pliku konfiguracji bazy danych, więc pierwsze podejście do pliku "system/config/Database.php" wygląło tak:
$config['default'] = array
(
'benchmark' => FALSE,
'persistent' => FALSE,
'connection' => array
(
'type' => 'pdosqlite',
'user'=>'',
'dsn' => 'sqlite:/home/lipt0n/www/xxx/htdocs/xxx/baza.db',
'pass' => '',
'host' => '',
'port' => FALSE,
'socket' => FALSE,
'database' => ''
),
'character_set' => 'utf8',
'table_prefix' => '',
'object' => TRUE,
'cache' => FALSE,
'escape' => TRUE
);
Nie na wiele się to jednak zdało, w dodatku kohana zamiast poinformowac o tym iż nie może się połączyć z bazą danych wywala tylko błąd o funkcji "array_keys" co nie wiele pomaga.
Zamiast marnować czas na dalsze googlowanie zerkołem do pliku zawierającego sterownik kohany, czyli "sysem/libraries/drivers/database/Pdosqlite.php"
początek metody connect wygląda tak:
try
{
$this->link = new PDO('sqlite:'.$socket.$database, $user, $pass,
array(PDO::ATTR_PERSISTENT => $this->db_config['persistent']));
nie trudno było więc ustalić jak ma wyglądać poprawna konfiguracja
$config['default'] = array
(
'benchmark' => FALSE,
'persistent' => FALSE,
'connection' => array
(
'type' => 'pdosqlite',
'user'=>'',
'pass' => null,
'host' => '',
'port' => FALSE,
'socket' => FALSE,
'database' => '/home/lipt0n/www/xxx/htdocs/xxx/baza.db'
),
'character_set' => 'utf8',
'table_prefix' => '',
'object' => TRUE,
'cache' => FALSE,
'escape' => TRUE
);
Od tej pory kohana zaczęła się ładnie dogadywać z bazą danych, działają zarówno normalne modele jak i ORM.
Jeśli nie znasz bezpośredniej ścieżki do pliku z bazą, pomóc powinna informacja jaką uzyskamy przez stworzenie plik php z zawartością :
<?php
echo $_SERVER["DOCUMENT_ROOT"];
?>
i uruchomienie go w przeglądarce.
Grudzień 16th, 2009 - 21:42
Wow, tego właśnie szukałem. Dzięki