Как вернуть удаленную (но примененную) миграцию в Django (MariaDB)?

Проблема (краткое описание)

У меня удален файл миграции, но он был ранее применен в базе данных. Я хочу вернуть изменения, которые он произвел.

Проблема (длинное описание)

Я форкнул пакет python и внес некоторые изменения в одну из его моделей. Я использовал форк вместо официального пакета в своем проекте, и мой новый переход был применен в моей базе данных.

Пару дней назад я заменил форк на официальную версию пакета и сделал то, что хотел, другим способом, больше не меняя модель. Это означает, что для того же приложения теперь не хватает одной миграции (миграции, которую я создал).

Однако изменения, которые эта миграция внесла в базу данных, все еще присутствуют, и имя миграции все еще указано в таблице django_migrations. Это привело к странным проблемам, поскольку код и база данных не синхронизированы.

Что я пробовал

  • Я попробовал запустить python manage.py migrate <appname> <previous_migration>, где appname - это приложение, с миграциями которого у меня проблемы, а previous_migration - это последняя миграция, которая была у приложения до того, как я добавил свою.
  • Я пытался изменить базу данных напрямую, вручную отменяя изменения, которые были сделаны той, теперь уже устаревшей миграцией.
  • Я попробовал полностью удалить таблицу и позволить миграции создать ее заново, но, видимо, я ошибся, поскольку Django считает, что миграции применены и не применяет их повторно
  • .

Что я хочу достичь

Я хочу избавиться от этой миграции, вернуть изменения, которые она внесла, не создавая никаких проблем. Меня не волнуют данные, которые есть в этой таблице (даже в production), поэтому даже если решение включает удаление затронутой таблицы, я не возражаю.

Однако, я ищу чистое решение, которое не будет слишком усложнять ситуацию. Скорее, мне бы понравилось, если бы было что-то, что я мог бы сделать в коде, а не в базе данных напрямую.

Вернуться на верх