[英]How to start a Symfony server with environment variables from .env.test?
[英]How to create a test database when Symfony commands append '_test' to the database name in .env.test?
尝试在测试数据库上运行迁移会返回附加“_test”的测试数据库名称。 如何正确创建测试数据库(以及稍后加载固定装置)?
例如:
使用命令symfony new simple --version="6.1.*" --webapp
创建了一个新项目,并使用make:entity
创建了一些实体。 在 MySQL 8 中,创建了名为simple
和simple_test
的数据库。
.env
包含DATABASE_URL="mysql://name:password@127.0.0.1:3306/simple?serverVersion=8&charset=utf8mb4"
.env.test
包含DATABASE_URL="mysql://name:password@127.0.0.1:3306/simple_test?serverVersion=8&charset=utf8mb4"
运行php bin/console doctrine:migrations:migrate
结果如预期:
WARNING! You are about to execute a migration in database "simple" that could result in schema changes and data loss. Are you sure you wish to continue? (yes/no) [yes]:
> y
[notice] Migrating up to DoctrineMigrations\Version20220907223538
[notice] finished in 4220.2ms, used 22M memory, 1 migrations executed, 7 sql queries
安慰:
php bin/console doctrine:migrations:migrate --env=test
.env.test
...
DATABASE_URL="mysql://name:password@127.0.0.1:3306/simple_test?serverVersion=8&charset=utf8mb4"
结果是:
In ExceptionConverter.php line 101:
An exception occurred in the driver: SQLSTATE[HY000] [1049] Unknown database 'simple_test_test'
In Exception.php line 28:
SQLSTATE[HY000] [1049] Unknown database 'simple_test_test'
In Driver.php line 28:
SQLSTATE[HY000] [1049] Unknown database 'simple_test_test'
文本_test
附加到.env.test
中使用的任何数据库名称
好吧,我会[在这里插入自虐]。 我想这种行为记录在某处 - 我还没有看到。
当php bin/console doctrine:migrations:migrate --env=test
假设存在带有_test
的 dev/prod 数据库名称时。
在过去,我需要明确测试数据库的名称。 Symfony 已决定所有测试数据库将是 dev/prod 数据库的名称,并附加_test
。 所以现在您可以在.env
和.env.test
中使用相同的DATABASE_URL...
有时一个人得到了太多的帮助!
编辑:检查.env.test上的.env.test
文档。 我上面描述的行为不存在! 文档显示 URL 包括_test
在数据库名称中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.