Cam*_*ilo 1 php sqlite laravel laravel-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');
});
}
}
Run Code Online (Sandbox Code Playgroud)
我可以在堆栈跟踪中看到错误来自处理请求的控制器方法/articles,如下所示:
public function all()
{
Article::all();
}
Run Code Online (Sandbox Code Playgroud)
因此,测试本身似乎可以访问数据库,但控制器不能访问数据库。
该.env.dusk.local文件如下所示:
DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
Run Code Online (Sandbox Code Playgroud)
该homestead文件正在我的项目根文件夹中创建。该文件也在虚拟机内找到,权限如下所示:
-rw-rw-r-- 1个流浪者
尝试设置DATABASE为database/testing.sqlitein .env.dusk.local。Dusk 启动后会创建该文件,但错误仍然表明找不到数据库database/testing.sqlite。
数据库(database/testing.sqlite)不存在。
可以使用 CLI 访问数据库文件sqlite3,并且可以毫无问题地查询记录。
我正在使用 Laravel 5.5 和 Homestead。
问题出现在内部config/database.php,在这里附近:
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
]
Run Code Online (Sandbox Code Playgroud)
因为DB_DATABASEinside.env.dusk.local被定义为homestead,所以最终的配置值database.connections.sqlite.database是一样的:homestead。
实际值应该是文件的完整路径,可以通过database_path()帮助程序获取。因此,只需退出database_path()通话即可env():
'database' => database_path(env('DB_DATABASE', 'database.sqlite'))
Run Code Online (Sandbox Code Playgroud)
的值database.connections.sqlite.database成为数据库文件的完整路径,一切似乎都正常。
| 归档时间: |
|
| 查看次数: |
889 次 |
| 最近记录: |