问题描述
我使用 Laravel Sail 作为我的开发环境。根据{{3}},
当 MysqL 容器启动时,它将确保存在一个名称与您的 DB_DATABASE 环境变量的值匹配的数据库。
这非常适合我的开发环境,但在测试方面不是很多,因为我的 .env.testing
定义了一个单独的数据库,而且这个数据库似乎没有被创建 - 当我 sail MysqL
进入容器并运行 show databases;
它未列出。因此,运行 sail test
的每个测试都会失败。
sqlSTATE[HY000] [1045] Access denied for user ...
DB_CONNECTION=MysqL
DB_HOST=MysqL
DB_PORT=3306
DB_DATABASE=dev
DB_CONNECTION=MysqL
DB_HOST=MysqL
DB_PORT=3306
DB_DATABASE=test
DB_USERNAME
和 DB_PASSWORD
在两个文件中是相同的。
如何创建此数据库,使其在运行 sail test
时可用?
编辑:
当我深入研究 docs 时,我发现在构建 MysqL
容器映像时正在创建数据库,但是 repository code。
MysqL_DATABASE
此变量是可选的,允许您指定要在映像启动时创建的数据库的名称。如果提供了用户/密码(见下文),则该用户将被授予对该数据库的超级用户访问权限(对应于 GRANT ALL)。
解决方法
您应该能够在现有 mysql 容器上与原始 int n;cin>>n;
int a[n];
for(int i=0;i<n;i++)
cin>>a[i];
while(n--)
{a[n]-a[n-1];}
数据库一起创建 test
数据库:
dev
我没有使用 mysql 测试过这个,但同样的过程适用于 postgres:
sail mysql
mysql> CREATE DATABASE test;