Откат миграций
Команда undo_migration откатывает указанную миграцию и все более поздние миграции, которые уже были применены после нее.
Команда
uv run manage.py undo_migration --name <migration_name>
Используйте команду только для осознанного отката конкретной точки истории. Без имени миграции команда не работает.
По умолчанию: Команда начинает откат указанной миграции и всех более поздних зависимых миграций.
Параметры
| Параметр | Описание |
|---|---|
--name, -n |
Имя миграции без расширения .py. |
Дополнительные примеры запуска
Откатить миграцию сервиса
uv run manage.py undo_migration --name 002_mcms_remotes
Команда найдет целевую миграцию в таблице истории, затем проверит, есть ли поверх нее более поздние применения.
Откатить миграцию сабмодуля
uv run manage.py undo_migration --name 015_actor_permaction
Подходит для отладки изменений в самом auth_perms, если файл с таким именем уже был применен в базе.
Как работает
- Проверяет, что имя передано и что такая миграция действительно присутствует в таблице
migrations. - Собирает общий список миграций, находит целевой модуль и вычисляет все более поздние миграции, которые были применены после него.
- Перед откатом выводит список зависимых файлов и интерактивно спрашивает подтверждение продолжения.
- Если подтверждение получено, откатывает более поздние миграции в обратном порядке, затем откатывает целевую миграцию через
backward_migration(...).
Что важно учесть
- Команда интерактивная: без подтверждения цепочка отката не будет выполнена.
- Dry-run режима нет, поэтому для рабочих баз откат стоит сопровождать резервной копией.
- Имя должно уже присутствовать в истории применений. Если файл есть на диске, но не был применен, откат не начнется.
- Как и у
migrate, корректность отката зависит от структуры классаMigrationи наличияbackwards_query.