数据库 (database/database.sqlite) 不存在。工匠修补匠的数据库作品
Posted
技术标签:
【中文标题】数据库 (database/database.sqlite) 不存在。工匠修补匠的数据库作品【英文标题】:Database (database/database.sqlite) does not exist. Database works from artisan tinker 【发布时间】:2017-08-25 17:27:14 【问题描述】:我在 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 tinker
和DB::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'))
,它返回database/database.sqlite
而不是我的绝对路径。
【问题讨论】:
你的服务器是如何运行的?php artisan serve
还是 apache/nginx?
使用.env
中文件的绝对路径
嘿,我的解决方案是从我的 .env 中完全删除 DB_DATABASE 条目。这样,它默认使用正确允许我的应用程序与数据库交互的 database_path() 函数。
@chris 它在 Laravel 5.7 版中对我有用,tnx
【参考方案1】:
您需要使用完整路径,例如:
DB_DATABASE=/home/laravel-project/database/database.sqlite
【讨论】:
更简单的方法是使用“../database/database.sqlite” mac 和 linux 都是这样,但是 windows 呢? @wafi 在 Laravel 7.3 中,写入 "../database/database.sqlite" 可用于迁移,但在尝试登录/注册时,找不到数据库。恢复到database/database.sqlite
就找到了,但是之后php artisan migrate
就找不到了,所以全路径的解决方案是好的。
@TuGordoBello for windows 使用完整路径替换单反斜杠双反斜杠 \\.例如:DB_DATABASE=C:\\Project_Folder\\database\\database.sqlite【参考方案2】:
如果您从.env
文件中删除DB_DATABASE=...
并使用config/database.php
中的路径:
'database' => env('DB_DATABASE', database_path('database.sqlite')),...
(如果您的database.sqlite
文件位于database/
文件夹中),它也可以工作。
【讨论】:
【参考方案3】:我运行了以下命令:
php artisan config:cache
php artisan config:clear
php artisan serve
- 重启服务器
【讨论】:
如果即使在一切都配置好之后也没有任何效果,这是最好的解决方案。你也可以试试 'php artisan route:clear' 和 'php artisan optimize'【参考方案4】:在 config/database.php 文件中:
'sqlite' => [
'driver' => 'sqlite',
'database' => dirname(__DIR__).'/database/database.sqlite',
],
然后运行以下命令:
php artisan config:cache
php artisan config:clear
【讨论】:
为我工作,谢谢! 这也是我的解决方案。请对此提供一点解释。【参考方案5】:对于那些仍然面临这个问题的人:https://laracasts.com/discuss/channels/general-discussion/database-databasedatabasesqlite-does-not-exist-error-on-running?page=1
由于 sqlite 只需要 DB_CONNECTION=sqlite 在 .env 文件中,因此您只需删除另一个:
DB_HOST
DB_PORT
DB_DATABASE
DB_USERNAME
DB_PASSWORD
然后保存并再次运行迁移。这就是我解决问题的方法。干杯!
【讨论】:
【参考方案6】:正如Chris在cmets中所说,主要的解决方案是从.env文件中完全删除DB_DATABASE
(其实只需要下面代码的第一行)。
DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USERNAME=admin
DB_PASSWORD=
【讨论】:
【参考方案7】:我认为,这里的问题是由于 Homestead。 本地机上database.sqlite文件的绝对路径与虚拟机上的不一样。
在我的情况下 a 必须设置:
DB_DATABASE=/home/vagrant/code/database/database.sqlite
或者,您可以将这一行注释掉,然后就可以开始了。
#DB_DATABASE=
【讨论】:
【参考方案8】:对于 Windows,您需要像这样设置路径
DB_DATABASE="C:\\xampp\\htdocs\\project\\data\\database.db"
【讨论】:
【参考方案9】:从 C: 目录转到 PHP 文件夹并打开文件 php.ini。
从那里找到extension=pdo_sqlite
并删除;
【讨论】:
以上是关于数据库 (database/database.sqlite) 不存在。工匠修补匠的数据库作品的主要内容,如果未能解决你的问题,请参考以下文章