Wie man SQLite in Laravel zum Laufen bringt
Wenn ich rennephp artisan migrate
, der folgende Fehler wird in der Konsole angezeigt:
[PDOException]
SQLSTATE [HY000] [14] Datenbankdatei kann nicht geöffnet werden
Das database.sqlite -Datei befindet sich unterDatenbank. Ich renneWindows 10, Laravel 5.2. Hier ist .env file config:
DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=homestead
DB_PASSWORD=secret
Ich habe überall gesucht, konnte aber nicht finden, was diesen Fehler verursacht und wie er behoben werden kann.
AktualisiereIch konnte Migrationen erfolgreich ausführen, indem ich @ ersetzDB_DATABASE=database
mitDB_DATABASE=database/database.sqlite
im .env Datei. Ein neuer Fehler tritt jedoch immer dann auf, wenn ich versuche, Elemente aus der Datenbank abzurufen:
public function index()
{
// cause of the error
$cards = Card::all();
return view('cards.index', compact('cards'));
}
Die obige Aktion löst folgenden Fehler aus:
InvalidArgumentException in SQLiteConnector.php Zeile 34:
Database (database / database.sqlite) existiert nicht.
Das Seltsame ist, dass der BefehlCard::all()
funktioniert einwandfrei inphp artisan tinker
mode. Was für eine Art von Magie ist das?
Anyway, ich habe auch herausgefunden, dass die Zeile:
'database' => env('DB_DATABASE', database_path('database.sqlite')),
im database.php -Datei muss durch nur @ ersetzt werddatabase_path('database.sqlite')
undalles beginnt normal zu funktionieren.
Es scheint, dass die Wurzel des Problems @ ienv('DB_DATABASE')
Anruf. Ich ging zu SQLiteConnector.php Datei und die Ausgabe von beiden ausgegebenenv('DB_DATABASE')
unddatabase_path('database.sqlite')
. Hier sind ihre Ausgänge jeweils:
dd(env('DB_DATABASE')) // => 'database/database.sqlite'
dd(database_path('database.sqlite')) // => 'D:\www\project\database\database.sqlite'
ie Sie sehen, unterscheidet sich ihre Ausgabe, und die zweite ist, was erwartet wird. Ist das ein Laravel-Bug? Oder habe ich etwas falsch verstanden?