Сброс длительных миграций Django
По мере роста проекта, миграции (как makemigrations
а также migrate)
займет больше и больше времени, откладывая довольно много каждого развертывания.
Django позволяет вам раздавить их, чтобы у вас не было длинного списка файлов миграции, но, тем не менее, миграции занимают столько же времени.
Тогда я попробовал следующее:
- Удалить все файлы миграции в моем приложении
- Очистить
django_migrations
таблица в БД - Бежать
makemigrations
(чтобы создать0001_initial
для моего приложения) - Бежать
migrate --fake
(чтобы заполнитьdjango_migrations
Таблица)
Теперь новые миграции действительно быстрые за счет потери истории миграции.
Итак, мой вопрос, учитывая, что это может быть как v1.0, и это отдельный проект, от которого зависит любой другой проект. Каковы риски, связанные с этим?
У меня такое чувство, что это не то, что нужно делать, так как я не мог найти какую-то конкретную команду Django для этого. South
имеет сброс, но теперь у django migrations есть только сквош...
1 ответ
Пока все ваши установки были обновлены, когда вы удалили миграции, нет никакого вреда, чтобы удалить старые миграции. Единственный недостаток в том, что вы не можете легко вернуться в историческое состояние базы данных после того, как удалили их, но за исключением случая со старым файлом резервных копий, вы не должны его использовать.
Как я уже указывал, просто убедитесь, что все, кто использует ваш проект, обновлены до этого (или дайте им указания, такие как фиксация перед удалением, чтобы они могли выполнить миграции перед обновлением до HEAD, если вы используете систему контроля версий исходного кода).
Если вы разрабатываете стороннее приложение, это усложнит установку (--fake
аргумент, обновляете ли вы или устанавливаете...) но это не ваш случай.