找不到 Dusk SQLite 数据库
Dusk SQLite database not found
我收到这个错误:
Database (homestead) does not exist.
当我尝试这个简单的 Dusk 测试时:
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 vagrant vagrant
尝试在 .env.dusk.local
中将 DATABASE
设置为 database/testing.sqlite
。该文件是在 Dusk 启动后创建的,但错误仍然是找不到 database/testing.sqlite
数据库。
Database (database/testing.sqlite) does not exist.
可以使用 sqlite3
CLI 访问数据库文件,我可以毫无问题地查询记录。
我正在使用 Laravel 5.5 和 Homestead。
问题出现在config/database.php
,附近:
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
]
因为 .env.dusk.local
中的 DB_DATABASE
定义为 homestead
,database.connections.sqlite.database
的配置值最终相同:homestead
.
实际值应该是文件的完整路径,可以通过database_path()
助手获取。因此,通过简单地将 database_path()
移出 env()
调用:
'database' => database_path(env('DB_DATABASE', 'database.sqlite'))
database.connections.sqlite.database
的值成为数据库文件的完整路径,一切似乎都正常。
我收到这个错误:
Database (homestead) does not exist.
当我尝试这个简单的 Dusk 测试时:
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 vagrant vagrant
尝试在 .env.dusk.local
中将 DATABASE
设置为 database/testing.sqlite
。该文件是在 Dusk 启动后创建的,但错误仍然是找不到 database/testing.sqlite
数据库。
Database (database/testing.sqlite) does not exist.
可以使用 sqlite3
CLI 访问数据库文件,我可以毫无问题地查询记录。
我正在使用 Laravel 5.5 和 Homestead。
问题出现在config/database.php
,附近:
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
]
因为 .env.dusk.local
中的 DB_DATABASE
定义为 homestead
,database.connections.sqlite.database
的配置值最终相同:homestead
.
实际值应该是文件的完整路径,可以通过database_path()
助手获取。因此,通过简单地将 database_path()
移出 env()
调用:
'database' => database_path(env('DB_DATABASE', 'database.sqlite'))
database.connections.sqlite.database
的值成为数据库文件的完整路径,一切似乎都正常。