我在尝试执行测试时遇到此错误(Laravel 5.3):
PHPUnit 5.7.13 by Sebastian Bergmann and contributors.
E{"sError":"An error occurred while connecting to the database ':memory:'. The error reported by the server was: SQLSTATE[HY000] [1044] Access denied for user 'mick'@'%' to database ':memory:'"}
phpUnit.xml
<php>
<env name="APP_ENV" value="testing"/>
<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
</php>
database.php中
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
],
我做错了什么?这些设置在另一个项目中正常工作?
我没有使用配置缓存。
看起来它仍在使用我的.env
中的值米克
编辑:刚回来,我正在使用它进行调试:$string ="Name: " . DB::connection()->getName() . " DB: " . DB::connection()->getDatabaseName() . " Driver: " . DB::connection()->getDriverName();
所以,如果我在导致错误的行之前这样做,我得到:
"Name: sqlite DB: :memory: Driver: sqlite"
然后,此代码执行:
$this->actingAs($user)
->visit('/')
->click('Categories');
再次,我收到错误:
{"sError":"An error occurred while connecting to the database ':memory:'. The error reported by the server was: SQLSTATE[HY000] [1044] Access denied for user 'mick'@'%' to database ':memory:'"}
如果我这样做:
$this->actingAs($user)
->visit('/');
然后测试执行OK。
答案 0 :(得分:0)
您在问题中报告的错误消息:
连接数据库时发生错误':memory:'。服务器报告的错误是:SQLSTATE [HY000] [1044]拒绝访问用户'mick'@'%'访问数据库':memory:'
这表明不是使用Sqlite数据库而是使用Mysql数据库。我根本不熟悉Laravel,但我会说有一些对Mysql的回落。出于测试目的,我将从整体配置中删除Mysql,看看它出现了什么。
这与你决定做的完全不同,那就是完全切换到Mysql(根据你在Laracast论坛上的帖子)。