symfony 4创建测试数据库

时间:2018-11-05 09:38:28

标签: symfony4

我有.env.env.test个文件,它们具有不同的APP_ENVDATABASE_URL值。

.env中,我有DATABASE_URL=pgsql://postgres:asdfasdf@db:5432/real_db;在.env.test中,我有DATABASE_URL=pgsql://postgres:asdfasdf@db:5432/test_db

但是当我运行命令bin/console doctrine:database:create --if-not-exists --env=test时,我看到消息用于默认连接的数据库“ real_db”已经存在。跳过

因此,由于某些原因,Symfony cli无法正确识别环境。

另外,在运行bin/console doctrine:schema:update --end=dev时,我也遇到了类似的问题。当我运行它时,我看到警告消息 [注意]不应在生产环境中执行此操作!,我需要使用--force来更新架构。

如何解决此问题,尤其是无法创建测试数据库的问题?谢谢!

1 个答案:

答案 0 :(得分:1)

默认情况下,.env文件仅在dev环境下工作。因此.env.xxx与任何环境都不相关,您不能像这样拆分env文件,但需要为每个环境手动export环境变量。从此链接https://symfony.com/doc/current/configuration/environments.htmlhttp://fabien.potencier.org/symfony4-best-practices.html

中了解更多信息

要在phpunit.xml中定义测试变量,请参见https://symfony.com/doc/current/testing/database.html#changing-database-settings-for-functional-tests

对于[CAUTION] This operation should not be executed in a production environment!是一个很好的警告,请不要担心,使用--force可以防止出现一些错误。