J'ai créé mon fichier database.sqlite dans le dossier database
. Le contenu de mon fichier .env
est le suivant:
DB_CONNECTION=sqlite
DB_Host=127.0.0.1
DB_PORT=3306
DB_DATABASE=absolute\path\to\database\database.sqlite
DB_USERNAME=admin
DB_PASSWORD=
Lorsque je lance php artisan tinker
et DB::table('users')->get();
, je récupère les informations de la base de données.
Mon DatabaseController est:
class DatabaseController extends Controller
{
public function main()
{
$users = DB::table('users')->get();
return view('database',compact($users));
}
}
Pourtant, lorsque je demande le chemin /database
, le message d'erreur suivant s'affiche:
QueryException in Connection.php line 647:
Database (database/database.sqlite) does not exist. (SQL: select * from "users")
UPDATE: Un correctif temporaire consiste à changer le fichier database.php du dossier config
:
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'database' => 'absolute\path\database\database.sqlite',
'prefix' => '',
],
Au lieu d'utiliser env('DB_DATABASE', database_path('database.sqlite'))
, qui renvoie database/database.sqlite
et non mon chemin absolu.
Vous devez utiliser le chemin complet, quelque chose comme:
DB_DATABASE=/home/laravel-project/database/database.sqlite
Si vous supprimez DB_DATABASE=...
de votre fichier .env
et utilisez le chemin dans config/database.php
:
'database' => env('DB_DATABASE', database_path('database.sqlite')),...
(si votre fichier database.sqlite
est dans le dossier database/
), cela fonctionnera également.
J'ai lancé les commandes suivantes:
php artisan config:cache
php artisan config:clear
php artisan serve
- redémarré le serveur
Dans le fichier config/database.php:
'sqlite' => [
'driver' => 'sqlite',
'database' => dirname(__DIR__).'/database/database.sqlite',
],
Puis lancez la commande suivante:
php artisan config:cache
php artisan config:clear
Je pense que le problème ici était dû à Homestead . Le chemin absolu vers le fichier database.sqlite sur la machine locale n’est pas le même que celui de la machine virtuelle.
Dans mon cas, il fallait définir:
DB_DATABASE=/home/vagrant/code/database/database.sqlite
Ou, vous pouvez simplement commenter cette ligne et vous êtes prêt à partir.
#DB_DATABASE=