Cómo hacer que SQLite funcione en Laravel
Cada vez que corrophp artisan migrate
, se muestra el siguiente error en la consola:
[PDOException]
SQLSTATE [HY000] [14] no puede abrir el archivo de base de datos
losdatabase.sqlite el archivo se encuentra enbase de datos/. Estoy corriendoWindows 10, Laravel 5.2. Aquí está.env config de archivo:
DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=homestead
DB_PASSWORD=secret
He buscado en todas partes, pero no pude encontrar qué causa este error y cómo resolverlo.
ActualizarLogré hacer que las migraciones se ejecuten con éxito reemplazandoDB_DATABASE=database
conDB_DATABASE=database/database.sqlite
en.env archivo. Sin embargo, se produce un nuevo error cada vez que intento recuperar elementos de la base de datos:
public function index()
{
// cause of the error
$cards = Card::all();
return view('cards.index', compact('cards'));
}
La acción anterior arroja el siguiente error:
InvalidArgumentException en SQLiteConnector.php línea 34:
La base de datos (database / database.sqlite) no existe.
Lo extraño es que el comandoCard::all()
funciona perfectamente enphp artisan tinker
modo. ¿Qué tipo de magia es esa?
De todos modos, también descubrí que la línea:
'database' => env('DB_DATABASE', database_path('database.sqlite')),
endatabase.php archivo debe ser reemplazado con solodatabase_path('database.sqlite')
ytodo comienza a funcionar normalmente.
Parece que la raíz del problema esenv('DB_DATABASE')
llamada. fui aSQLiteConnector.php archivo y volcó la salida de ambosenv('DB_DATABASE')
ydatabase_path('database.sqlite')
. Aquí están sus salidas respectivamente:
dd(env('DB_DATABASE')) // => 'database/database.sqlite'
dd(database_path('database.sqlite')) // => 'D:\www\project\database\database.sqlite'
Como puede ver, su salida difiere, y la segunda es la que se espera. ¿Es esto un error de Laravel? ¿O entendí mal algo?