我无法在Homestead / Vagrant盒子内运行Laravel迁移。还有更多这样的问题,但似乎没有一个适合我的答案。
我建立了一个博客网站,其在VirtualBox中的路径为/home/vagrant/code/blog
。然后,按照docs中的说明,在/home/vagrant/code/blog/database/database.sqlite
创建了一个空文件,表示SQLite数据库。此外,我编辑了/home/vagrant/code/blog/.env
文件以包含“正确的”数据库信息:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=/home/vagrant/code/blog/database/database.sqlite
DB_USERNAME=homestead
DB_PASSWORD=secret
然后,我使用php artisan make:migration create_users_table
创建了迁移,如here所述。但是,当我尝试使用php artisan migrate,
应用此迁移时,出现以下错误:
vagrant@homestead:~/code/blog$ php artisan migrate
Illuminate\Database\QueryException : SQLSTATE[HY000] [1049] Unknown database '/home/vagrant/code/blog/database/database.sqlite' (SQL: select * from information_schema.tables where table_schema = /home/vagrant/code/blog/database/database.sqlite and table_name = migrations and table_type = 'BASE TABLE')
at /home/vagrant/code/blog/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664
660| // If an exception occurs when attempting to run a query, we'll format the error
661| // message to include the bindings with SQL, which will make this exception a
662| // lot more helpful to the developer instead of just the database's errors.
663| catch (Exception $e) {
> 664| throw new QueryException(
665| $query, $this->prepareBindings($bindings), $e
666| );
667| }
668|
Exception trace:
1 PDOException::("SQLSTATE[HY000] [1049] Unknown database '/home/vagrant/code/blog/database/database.sqlite'")
/home/vagrant/code/blog/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70
2 PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=/home/vagrant/code/blog/database/database.sqlite", "homestead", "secret", [])
/home/vagrant/code/blog/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70
Please use the argument -v to see more details.
所以它说即使我输入了数据库的绝对路径也找不到数据库,这怎么可能?我知道路径必须正确,因为当我运行ls /home/vagrant/code/blog/database/database.sqlite
时,它被列为现有文件。
我该如何解决?
答案 0 :(得分:2)
更改此:
DB_CONNECTION=mysql
与此:
DB_CONNECTION=SQLite
在您的.env文件中
答案 1 :(得分:0)
如果您从.env文件中删除DB_DATABASE并使用config / database.php中的默认值,则会发生什么情况
'database' => env('DB_DATABASE', database_path('database.sqlite')),
答案 2 :(得分:0)
首先,您需要更改您的默认数据库驱动程序,该驱动程序当前已使用mysql
设置,即DB_CONNECTION=SQLite
。请替换为DB_CONNECTION=SQLite
。并确认database.sqlite
文件位于路径/home/vagrant/code/blog/database/database.sqlite
答案 3 :(得分:0)
你很可能在你的电脑上运行了两个mysql实例,这就是我的情况,使用终端创建一个数据库,你使用的细节应该是你应该使用的。