Я пользуюсь Django около 2 лет, и есть функция, которой я всегда боялся: фальсификация миграций.
Я посмотрел почти везде, и большую часть информации я могу получить из документации, где говорится, что:
--fake
Сообщает Django пометить миграции как примененные или не примененные, но без фактического запуска SQL для изменения схемы базы данных.
Это предназначено для опытных пользователей для непосредственного управления текущим состоянием миграции, если они вручную применяют изменения; Имейте в виду, что использование --fake может привести к переводу таблицы состояний миграции в состояние, в котором для правильной работы миграций потребуется ручное восстановление.
--fake -initial
Позволяет Django пропустить начальную миграцию приложений, если все таблицы базы данных с именами всех моделей, созданных всеми операциями CreateModel в этой миграции, уже существуют. Этот параметр предназначен для использования при первом запуске миграций для базы данных, в которой ранее использовались миграции. Однако этот параметр не проверяет соответствие схемы базы данных за пределами совпадающих имен таблиц, поэтому его можно использовать только в том случае, если вы уверены, что ваша существующая схема совпадает с записанной при первоначальной миграции.
Я получил общее представление и почему кто-то хотел бы использовать эту функцию. Но я не понимаю ту часть, где говорится, что это предназначено только для опытных пользователей.
Может кто-нибудь объяснить, что происходит за кулисами и почему потребуется ручное восстановление.
НОТА
Я не ищу точные необработанные запросы SQL, которые выполняются при имитации миграции. Я только ищу общее представление о том, что происходит за makemigrations
и, возможно, пример того, почему фальсификация миграции может привести к makemigrations
что рабочие makemigrations
будут работать некорректно.