【发布时间】:2018-01-12 00:52:56
【问题描述】:
尝试执行我的测试时出现此错误(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>
数据库.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。
【问题讨论】:
-
让我问你一件事,为什么你的数据库配置来自 .env?
-
你是想说,我为什么要从 .env 文件中取出我的设置?我在测试时没有使用 phpunit.xml 中的值。
-
您使用什么操作系统?你能运行下面的命令
$ sqlite3吗? -
Linux - Centos。是的。