【发布时间】:2021-04-15 03:14:48
【问题描述】:
我使用 Laravel Sail 作为我的开发环境。根据docs,
当 MySQL 容器启动时,它将确保存在名称与 DB_DATABASE 环境变量的值匹配的数据库。
这非常适合我的开发环境,但在测试方面并没有那么多,因为我的 .env.testing 定义了一个单独的数据库,而且似乎这个数据库没有被创建 - 当我 sail mysql 进入容器并运行时show databases; 未列出。因此,运行 sail test 会导致所有与数据库相关的测试失败。
SQLSTATE[HY000] [1045] Access denied for user ...
我的.env 文件包含以下内容:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=dev
我的.env.testing 文件包含以下内容:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME 和 DB_PASSWORD 在两个文件中是相同的。
如何创建此数据库,以便在运行 sail test 时可用?
编辑:
当我挖掘repository code时,我发现在构建mysql容器映像时正在创建数据库,但是it doesn't look like there's an option for creating multiple databases。
MYSQL_DATABASE此变量是可选的,允许您指定要在映像启动时创建的数据库的名称。如果提供了用户/密码(见下文),则该用户将被授予对此数据库的超级用户访问权限(对应于 GRANT ALL)。
【问题讨论】:
标签: mysql docker laravel-sail