数据库 (database/database.sqlite) 不存在。数据库来自 artisan tinker

Database (database/database.sqlite) does not exist. Database works from artisan tinker

我在 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=

当我 运行 php artisan tinkerDB::table('users')->get(); 我从数据库中获取信息。

我的数据库控制器是:

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

        return view('database',compact($users));
    }
}

然而,当我请求 /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' => '',
    ],

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

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

DB_DATABASE=/home/laravel-project/database/database.sqlite

我运行以下命令:

php artisan config:cache

php artisan config:clear

php artisan serve - 重新启动服务器

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

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

(如果您的 database.sqlite 文件在 database/ 文件夹中),它也可以工作。

在config/database.php 文件中:

'sqlite' => [
              'driver' => 'sqlite',
              'database' => dirname(__DIR__).'/database/database.sqlite',
            ],

然后 运行 以下命令:

php artisan config:cache
php artisan config:clear

我认为,这里的问题是因为 Homesteaddatabase.sqlite 文件在本地机器上的绝对路径与虚拟机的路径不同。

在我的例子中,必须设置:

DB_DATABASE=/home/vagrant/code/database/database.sqlite

或者,您可以只注释掉这一行就可以开始了。

#DB_DATABASE=

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

因为 sqlite 只需要 DB_CONNECTION=.env 文件中的 sqlite,所以你只需删除另一个:

DB_HOST
DB_PORT
DB_DATABASE
DB_USERNAME
DB_PASSWORD

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

从您的 C: 目录转到 PHP 文件夹并打开文件 php.ini。 从那里找到 extension=pdo_sqlite 并删除 ;

如评论中Chris所说,主要解决办法是完全删除 DB_DATABASE.env文件(其实只有第一个需要以下代码行)。

DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USERNAME=admin
DB_PASSWORD=

对于Windows,您需要像这样设置路径

DB_DATABASE="C:\xampp\htdocs\project\data\database.db"