数据库(database/database.sqlite)不存在.数据库来自工匠修补匠

Ale*_*chi 14 database sqlite connection configuration laravel

我在文件database夹中创建了我的database.sqlite文件.我的.env文件内容是:

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=
Run Code Online (Sandbox Code Playgroud)

当我运行时php artisan tinker,DB::table('users')->get();我从数据库中获取信息.

我的DatabaseController是:

class DatabaseController extends Controller
{
    public function main()
    {
        $users = DB::table('users')->get();

        return view('database',compact($users));
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,当我请求/database路径时,我收到错误:

QueryException in Connection.php line 647: Database (database/database.sqlite) does not exist. (SQL: select * from "users")

更新:临时修复是从config文件夹更改database.php :

  'connections' => [

    'sqlite' => [
        'driver' => 'sqlite',
        'database' => 'absolute\path\database\database.sqlite', 
        'prefix' => '',
    ],
Run Code Online (Sandbox Code Playgroud)

而不是使用env('DB_DATABASE', database_path('database.sqlite')),而database/database.sqlite不是我的绝对路径.

Ale*_*nin 19

您需要使用完整路径,例如:

DB_DATABASE=/home/laravel-project/database/database.sqlite
Run Code Online (Sandbox Code Playgroud)

  • 更简单的方法是使用“../database/database.sqlite” (8认同)

gdf*_*dfg 9

如果您DB_DATABASE=....env文件中删除并使用以下路径config/database.php

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

(如果您的database.sqlite文件位于database/文件夹中),它也将起作用。


dav*_*ouk 8

对于那些仍然面临此问题的人:https://laracasts.com/discuss/channels/general-discussion/database-databasedatabasesqlite-does-not-exist-error-on-running ?page=1

由于 sqlite 仅需要 .env 文件中的 DB_CONNECTION=sqlite,因此您只需删除另一个:

DB_HOST
DB_PORT
DB_DATABASE
DB_USERNAME
DB_PASSWORD
Run Code Online (Sandbox Code Playgroud)

然后保存并再次运行迁移。这就是我解决问题的方法。干杯!


Ale*_*chi 7

我运行了以下命令:

php artisan config:cache

php artisan config:clear

php artisan serve -重新启动服务器


小智 7

在 config/database.php 文件中:

'sqlite' => [
              'driver' => 'sqlite',
              'database' => dirname(__DIR__).'/database/database.sqlite',
            ],
Run Code Online (Sandbox Code Playgroud)

然后运行以下命令:

php artisan config:cache
php artisan config:clear
Run Code Online (Sandbox Code Playgroud)


小智 6

正如Chris在评论中所说,主要的解决方案是从 .env 文件中完全删除 DB_DATABASE(实际上只需要以下代码的第一行)。

DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USERNAME=admin
DB_PASSWORD=
Run Code Online (Sandbox Code Playgroud)