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:

.env:
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.

Aktualisiere

Ich 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?

Antworten auf die Frage(14)

Ihre Antwort auf die Frage