我有.env
和.env.test
个文件,它们具有不同的APP_ENV
和DATABASE_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
来更新架构。
如何解决此问题,尤其是无法创建测试数据库的问题?谢谢!
答案 0 :(得分:1)
默认情况下,.env
文件仅在dev
环境下工作。因此.env.xxx
与任何环境都不相关,您不能像这样拆分env
文件,但需要为每个环境手动export
环境变量。从此链接https://symfony.com/doc/current/configuration/environments.html和http://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
可以防止出现一些错误。