2009-06-20 27 views
9

Mam raczej podstawowy problem: nie mogę połączyć CakePHP z moją bazą danych SQLite. Co ciekawe, nie znalazłem wielu informacji na ten temat w Internecie, chociaż mogę wyszukiwać niewłaściwe słowa kluczowe. Niemniej jednak, jest to mój kod połączenia:Jak podłączyć CakePHP do bazy danych SQLite?

var $default = array(
     'driver' => 'sqlite', 
     'connect' =>'sqlite_popen', 
     'persistent' => false, 
     'host' => 'localhost', 
     'port' => '', 
     'login' => '', 
     'password' => '', 
     'database' => '/home/MY_USER_NAME/public_html/my_database.sqlite', 
     'schema' => '', 
     'prefix' => '', 
     'encoding' => '' 
); 

Nadal ciasto mówi tylko "Ciasto NIE jest w stanie połączyć się z bazą danych". Ponadto nie wiem, gdzie zobaczyć "prawdziwe" dzienniki (tj. Błąd zwrócony z "sterownika" SQLite). Więc trafiłem w ślepy zaułek. Co powinienem zrobić?

Z góry dziękuję.

+0

Nie rozumiem, co się stało: polityka SO polegała na tym, że nie było "zbyt oczywistych pytań". –

Odpowiedz

8

Od CakePHP 2.0, Sqlite 3 jest obsługiwany od razu po wyjęciu z pudełka.

Pamiętaj, że SQLite jest włączona w konfiguracji PHP:

phpinfo(); 

Wewnątrz app/Config/databases.php można zdefiniować SQLite bazy danych tak:

public $default = array(
     'datasource' => 'Database/Sqlite', 
     'persistent' => false, 
     'database' => 'my_database_name', 
     'prefix' => '', 
     'encoding' => 'utf8', 
); 

teraz sprawdzić plik app/webroot/my_database_name.sqlite.

1

Czy próbujesz połączyć się z bazą danych SQLite 3? CakePHP jeszcze ich nie obsługuje.

Poza tym możesz spróbować dodać wiodącą / w swojej ścieżce. Wygląda na to, że próbujesz zrobić absolutną ścieżkę, ale bez wiodącego cięcia nie zrobisz tego, co myślisz, że to zrobi.

+0

Dodano de wiodący slash, po prostu zapomniałem go podczas wpisywania ścieżki tutaj (przepisałem ścieżkę z nazwami zmienionymi w celu ochrony niewinnych). Słyszałem o problemie SQLite 3, ale nie wiem, jaka jest wersja utworzonej przeze mnie bazy danych, nie widziałem tej opcji w IDE (używam rozszerzenia SQLite Manager Firefoksa). Jak mogę to znaleźć? –

+0

"select sqlite_version()" wyświetli wersję używanego silnika sqlite. –

+0

Rozwiązał problem, rezygnując z SQLite Manager, pobierając bazę danych SQLite 2, brudząc sobie ręce i kodując bazę danych. –

6

SQLite3 nie jest jeszcze oficjalnie wspierane przez CakePHP ... prawdopodobnie dlatego, że plik dołączony do tego błędu/ulepszenia działa.

https://trac.cakephp.org/ticket/3003

Grab najnowsza wersja pliku, należy zaktualizować go z wszelkimi nowszych łatek, prześlij go do katalogu cake/libs/model/datasources/dbo i skonfigurować go w pliku database.php.

używam plik o nazwie dbo_sqlite3.php

mój plik konfiguracyjny wykorzystuje to w ustawieniach sterownika:

'driver' => 'sqlite3', 
+0

Miło wiedzieć, że mogę go wykorzystać w przyszłych projektach! Dzięki! –

6

Jak CakePHP z SQLite3:

WYMAGANIA:

Kroki:

Rozpakuj DataSources plugin na swoim miejscu.

Edit dbo_sqlite3.php i dodać:

App::import('Datasource','DboSource'); 

... tuż przed 'klasa' definicji.

Użyj następującej konfiguracji w pliku database.php:

var $default = array(
    'datasource' => 'Datasources.DboSqlite3', 
    'login' => '', 
    'password' => '', 
    'database' => '/full/path/to/db.sqlite'); 

zrobić.

+0

Tak, już teraz jest to łatwe = D problem polegał na tym, że nie były one dostępne po opublikowaniu tego pytania. Głosowanie w górę za odniesienie w każdym razie. =) –

Powiązane problemy