我收到了这个错误:
数据库(宅基地)不存在。
当我尝试这个简单的黄昏测试时:
class ShowArticleTest extends DuskTestCase
{
use DatabaseMigrations;
/** @test */
public function it_shows_all_articles()
{
Article::create([
'title' => 'My First Article',
'body' => 'Some body text.'
]);
$this->browse(function (Browser $browser) {
$browser->visit('/articles')
->assertSee('My First Article');
});
}
}
我可以在堆栈跟踪中看到错误来自处理/articles
请求的控制器方法,如下所示:
public function all()
{
Article::all();
}
因此,似乎数据库可由测试本身访问,但不能由控制器访问。
.env.dusk.local
文件如下所示:
DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
正在我的项目根文件夹中创建homestead
文件。该文件也可以在虚拟机中找到,权限如下所示:
-rw-rw-r-- 1个流浪汉流浪汉
在DATABASE
中尝试将database/testing.sqlite
设置为.env.dusk.local
。黄昏开始后会创建该文件,但错误仍然表示无法找到database/testing.sqlite
数据库。
数据库(database / testing.sqlite)不存在。
可以使用sqlite3
CLI访问数据库文件,我可以毫无问题地查询记录。
我正在使用Laravel 5.5和Homestead。
答案 0 :(得分:4)
问题发生在config/database.php
内,在这附近:
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
]
由于DB_DATABASE
中的.env.dusk.local
定义为homestead
,database.connections.sqlite.database
的配置值最终会相同:homestead
。
实际值应该是文件的完整路径,可以使用database_path()
帮助程序获取。因此,通过简单地移动database_path()
来调用env()
:
'database' => database_path(env('DB_DATABASE', 'database.sqlite'))
database.connections.sqlite.database
的值成为数据库文件的完整路径,一切似乎都有效。