Wie man SQLite arbeiten in Laravel

Wann immer ich laufen php artisan migrate die folgende Fehlermeldung in der Konsole:

[PDOException]

SQLSTATE[HY000] [14] unable to open database file

Den Datenbank.sqlite Datei befindet sich bei Datenbank/. Ich bin mit Windows 10, Laravel 5.2. Hier ist .env config-Datei:

.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, aber konnte Sie nicht finden, was diesen Fehler verursacht und wie es zu lösen.

Update

Schaffte ich Migrationen erfolgreich ausgeführt durch den Austausch DB_DATABASE=database mit DB_DATABASE=database/database.sqlite im .env - Datei. Doch der neue Fehler tritt auf, wenn ich versuche, um Elemente abzurufen, aus der Datenbank:

public function index()
{
    // cause of the error
    $cards = Card::all();

    return view('cards.index', compact('cards'));
}

Den oben genannten Maßnahmen wirft folgenden Fehler:

InvalidArgumentException in SQLiteConnector.php Zeile 34:

Datenbank (Datenbank/Datenbank.sqlite) nicht vorhanden ist.

Das merkwürdige ist, dass das Kommando Card::all() funktioniert einwandfrei in php artisan tinker - Modus. Welche Art von Magie ist das?

Jedenfalls habe ich auch herausgefunden, dass die Zeile:

'database' => env('DB_DATABASE', database_path('database.sqlite')),

in database.php Datei ersetzt werden muss mit nur database_path('database.sqlite') und alles beginnt, normal zu funktionieren.


Es scheint, dass die Wurzel des Problems ist env('DB_DATABASE') nennen. Ich ging zu SQLiteConnector.php Datei und warf die Ausgabe der beiden env('DB_DATABASE') und database_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'

Wie Sie sehen, Ihre Ausgabe unterscheidet sich, und das zweite ist, was erwartet wird. Ist das ein Laravel bug? Oder habe ich da etwas falsch verstanden?

  • bitte erläutern Sie den downvote! Ich kann nicht verstehen, was ich falsch gemacht habe
  • Ich weiß nicht, wer downvoted, aber berechtigte Frage, und du hast meine Stimme.
Schreibe einen Kommentar