web-dev-qa-db-fra.com

La base de données (database/database.sqlite) n'existe pas. Base de données fonctionne de bricoleur artisan

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.

7
Alexandru Antochi

Vous devez utiliser le chemin complet, quelque chose comme:

DB_DATABASE=/home/laravel-project/database/database.sqlite
11
Alexey Mezenin

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. 

4
gdfgdfg

J'ai lancé les commandes suivantes:

php artisan config:cache

php artisan config:clear

php artisan serve - redémarré le serveur

3

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
1
Sarwar Sikder

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=
0
Sergio Tskhovrebov