Как вернуть удаленную (но примененную) миграцию в Django (MariaDB)?
Проблема (краткое описание)
У меня удален файл миграции, но он был ранее применен в базе данных. Я хочу вернуть изменения, которые он произвел.
Проблема (длинное описание)
Я форкнул пакет python и внес некоторые изменения в одну из его моделей. Я использовал форк вместо официального пакета в своем проекте, и мой новый переход был применен в моей базе данных.
Пару дней назад я заменил форк на официальную версию пакета и сделал то, что хотел, другим способом, больше не меняя модель. Это означает, что для того же приложения теперь не хватает одной миграции (миграции, которую я создал).
Однако изменения, которые эта миграция внесла в базу данных, все еще присутствуют, и имя миграции все еще указано в таблице django_migrations. Это привело к странным проблемам, поскольку код и база данных не синхронизированы.
Что я пробовал
- Я попробовал запустить
python manage.py migrate <appname> <previous_migration>, гдеappname- это приложение, с миграциями которого у меня проблемы, аprevious_migration- это последняя миграция, которая была у приложения до того, как я добавил свою. - Я пытался изменить базу данных напрямую, вручную отменяя изменения, которые были сделаны той, теперь уже устаревшей миграцией.
- Я попробовал полностью удалить таблицу и позволить миграции создать ее заново, но, видимо, я ошибся, поскольку Django считает, что миграции применены и не применяет их повторно .
Что я хочу достичь
Я хочу избавиться от этой миграции, вернуть изменения, которые она внесла, не создавая никаких проблем. Меня не волнуют данные, которые есть в этой таблице (даже в production), поэтому даже если решение включает удаление затронутой таблицы, я не возражаю.
Однако, я ищу чистое решение, которое не будет слишком усложнять ситуацию. Скорее, мне бы понравилось, если бы было что-то, что я мог бы сделать в коде, а не в базе данных напрямую.