我使用 Laravel Sail 作为我的开发环境。根据文档,
当 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
?
编辑:
当我挖掘存储库代码时,我发现在mysql
构建容器映像时正在创建数据库,但看起来并没有创建多个数据库的选项。
MYSQL_DATABASE
此变量是可选的,允许您指定要在映像启动时创建的数据库的名称。如果提供了用户/密码(见下文),则该用户将被授予对此数据库的超级用户访问权限(对应于 GRANT ALL)。