Symfony 4 создать тестовую базу данных - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть .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" для соединения с именем default уже существует. Пропущено

По некоторым причинам Symfony cli не может правильно распознавать env.

Кроме того, у меня довольно похожая проблема при запуске bin/console doctrine:schema:update --end=dev. Когда я запускаю его, я вижу предупреждение [ВНИМАНИЕ] Эта операция не должна выполняться в производственной среде! , и мне нужно использовать --force для обновления схемы.

Как я могу это исправить, особенно проблема без возможности создания тестовой БД? Спасибо!

1 Ответ

0 голосов
/ 05 ноября 2018

По умолчанию .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 может предотвратить вашу ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...