Мы запускаем makemigrations
и migrate
при развертывании через Fabric (файлы миграции не передаются в кодовую базу).Однако, похоже, что это не создает миграцию для некоторых приложений.Выполнение одних и тех же команд миграции вручную (SSH непосредственно на сервере) приводит к разным (правильным) выводам.
Например, Fabric выполняет следующее:
./manage.py showmigrations --plan --settings=project.settings.dev_en
Что приводит к следующему выводу (я его немного укорочил для краткости):
[X] contenttypes.0001_initial
[X] auth.0001_initial
[X] admin.0001_initial
Если я SSH подключаюсь к серверу (используя тот же пользовательский Fabric) и запускаю его вручную,точно такая же команда выдает (опять же, немного отрезал, чтобы сократить его):
[X] contenttypes.0001_initial
[X] auth.0001_initial
[X] accounts.0001_initial
[X] accounts.0002_userprofile_gq_questions_user_type
[X] accounts.0003_auto_20170720_0742
[X] admin.0001_initial
Миграции для приложения accounts
были опущены (некоторые другие приложения имеют такую же проблему).
Точно так же - и что более важно - запуск makemigrations
через Fabric приводит к «Не обнаружено изменений», а запуск вручную приводит к правильному созданию файла миграции для уязвимого приложения / с.
Некоторые вещи, которые я 've проверено:
- Уязвимые приложения находятся в INSTALLED_APPS.
- Они содержат каталог
migrations
, доступный для записи пользователем, к которому подключается Fabric. - The
django_migrations
столправильно отражает содержимое различных папок миграции. - Fabric
cd
входит в каталог проекта и активирует virtualenv
Почему Fabric, по-видимому, видит сайт в другом состояниичем это?Почему не регистрируются изменения в некоторых моделях приложений?