【问题标题】:Laravel parallel test cant create the databaseLaravel 并行测试无法创建数据库
【发布时间】:2022-12-07 04:40:45
【问题描述】:

我正在尝试在文档中以并行模式运行 laravel 功能测试。我的phpunit.xml配置如下:

<php>
   <env name="APP_ENV" value="testing"/>
   <env name="BCRYPT_ROUNDS" value="4"/>
   <env name="CACHE_DRIVER" value="array"/>
   <env name="SESSION_DRIVER" value="array"/>
   <env name="QUEUE_DRIVER" value="sync"/>
   <env name="MAIL_DRIVER" value="array"/>
   <env name="DB_CONNECTION" value="mysql"/>
</php>

我正在使用此命令运行测试:

php artisan test --parallel

结果是所有测试都失败并显示此错误消息:

PDOException: SQLSTATE[HY000] [1049] Unknown database 'mydbname_test_11'

我应该在开始测试之前创建这个数据库还是 laravel 自动创建它?

【问题讨论】:

  • Laravel 不会自动创建数据库。您需要事先创建数据库。我不认为你甚至可以在迁移中做到这一点,因为迁移需要迁移表存在并且需要在数据库中

标签: php laravel phpunit


【解决方案1】:

正如文档所述,Laravel 将创建多个数据库以避免并行进程与彼此的数据发生冲突。

添加用户创建数据库的权限,根据错误假设这是一个postgres数据库。

访问客户端

psql test_db test

要执行的命令

ALTER USER test CREATEDB;

【讨论】:

  • 感谢你的回答 。我正在使用 mysql 并且 env 中的用户是 root 用户。我需要再次给予许可吗?因为我认为它具有所有前提
  • 当我将用户更改为假的时,出现如下错误:
  • SQLSTATE[HY000] [1045] 拒绝用户 'rootasdasd'@'172.19.0.5' 的访问(使用密码:YES)
  • 当我使用 --filter 运行单个测试时。一切都很好 。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多