2009-06-20 5 views
9

Ich habe ein ziemlich grundlegendes Problem: Ich kann CakePHP anscheinend nicht mit meiner SQLite-Datenbank verbinden. Überraschenderweise habe ich im Internet nicht viele Informationen darüber gefunden, obwohl ich die falschen Schlüsselwörter nachschlagen könnte. Trotzdem, das ist mein Verbindungscode:Wie verbinde ich CakePHP mit einer SQLite-Datenbank?

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' => '' 
); 

Dennoch Kuchen nur sagen „Kuchen nicht fähig ist, in die Datenbank zu verbinden“. Außerdem weiß ich nicht, wo die "echten" Protokolle zu sehen sind (d. H. Der Fehler, der vom SQLite "Treiber" zurückgegeben wurde). Also, ich habe eine Sackgasse erreicht. Was soll ich machen?

Vielen Dank im Voraus.

+0

Verstehe den Downvote nicht: obwohl SO Politik war, dass es keine "zu offensichtlichen Fragen" gab. –

Antwort

8

Ab CakePHP 2.0 wird Sqlite 3 standardmäßig unterstützt.

sicher sein, dass SQLite in Ihrer PHP-Konfiguration aktiviert ist:

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

Ihre app/webroot/my_database_name.sqlite Datei jetzt überprüfen:

phpinfo(); 

Innen app/Config/databases.php Sie SQLite-Datenbank wie folgt definieren können.

1

Versuchen Sie, eine Verbindung mit einer SQLite 3-Datenbank herzustellen? CakePHP unterstützt sie noch nicht.

Ansonsten sollten Sie versuchen, die führende / in Ihrem Pfad hinzuzufügen. Scheint so, als ob du einen absoluten Pfad anstrebst, aber ohne den führenden Schrägstrich wird es nicht tun, was du denkst, dass es das tun wird.

+0

Der führende Schrägstrich wurde hinzugefügt, ich habe ihn einfach vergessen, als ich den Pfad hier eingegeben habe (Ich habe den Pfad mit Namen neu eingegeben, um die Unschuldigen zu schützen). Ich habe von dem SQLite 3-Problem gehört, aber ich weiß nicht, welche Version der Datenbank ich erstellt habe. Diese Option wurde in der IDE nicht angezeigt (ich verwende den Extension SQLite Manager von Firefox). Wie finde ich es heraus? –

+0

"select sqlite_version()" zeigt Ihnen die Version der verwendeten SQLite-Engine. –

+0

Das Problem wurde gelöst, indem der SQLite Manager aufgegeben wurde, die SQLite 2-Datenbank heruntergeladen, meine Hände schmutzig gemacht und die Datenbank selbst codiert wurde. –

6

SQLite3 wird von CakePHP noch nicht offiziell unterstützt ... wahrscheinlich, weil die Datei, die diesem Bug/dieser Erweiterung beigefügt ist, funktioniert.

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

Besorgen Sie sich die neueste Version der Datei, aktualisieren Sie es mit allen neueren Patches, laden Sie sie auf Ihren cake/libs/model/datasources/dbo Verzeichnis und konfigurieren Sie es in Ihrer database.php Datei.

ich eine Datei dbo_sqlite3.php

Meine Konfigurationsdatei verwendet diese für die Treibereinstellung aufgerufen bin mit:

'driver' => 'sqlite3', 
+0

Es ist schön zu wissen, dass ich es in zukünftigen Projekten verwenden könnte! Vielen Dank! –

6

Wie CakePHP mit SQLite3:

Requirments:

Schritte:

Packen Sie die Datenquellen-Plugin vorhanden.

bearbeiten dbo_sqlite3.php und fügen:

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

... kurz vor der 'Klasse' Definition.

Verwenden Sie die folgende Konfiguration in Ihrer database.php Datei:

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

Erledigt.

+0

Ja, jetzt ist es schon einfach = D Das Problem war, dass diese nicht verfügbar waren, als diese Frage gepostet wurde. Abstimmung für die Referenz sowieso. =) –

Verwandte Themen