Хорошо, так что это глупо, и я уверен, что где-то что-то упустил.
Как вы выполняете обратную миграцию, используя South на Django?
Итак, я настроил свои модели, создал миграцию schemamigration
, запустил миграцию migrate
, и теперь я понимаю, что это не совсем то, что я хотел, и я хочу вернуть ее прежним способом.
Если не считать ручного редактирования таблиц БД и удаления файлов миграции, как мне откатить миграцию обратно? Я нахожу ссылки на обратную миграцию с помощью South через Google, но пока не нашел надежного примера кода.
Кто-нибудь может помочь?
django
migration
django-south
Ruiwen
источник
источник
Ответы:
Вам нужно выяснить номер миграции непосредственно перед тем, который вы хотите откатить.
Ваше приложение должно иметь каталог миграций, с файлами в нем, названными как
Обычно при запуске
./manage.py migrate your_app
South запускает все новые миграции по порядку. (Он просматривает таблицы базы данных, чтобы решить, какие из них «новые»).Тем не менее, вы также можете указать любую миграцию по номеру, и South перенесет вашу базу данных, вперед или назад , чтобы перейти к этой точке. Итак, с примерами файлов выше, если вы уже мигрировали до 0003, и вы хотели запустить 0003 в обратном порядке (отменить его, эффективно), вы бы запустили
Юг просмотрит базу данных, поймет, что она уже запустила 0003, и определит, что она должна выполнить обратную миграцию для 0003, чтобы вернуться к 0002.
источник
На тот случай, если кто-то (как я) задумался, как перейти с первоначального (0001) :
вывод:
«ноль» - это особое состояние перед любой миграцией.
Ссылка: http://south.aeracode.org/docs/commands.html
источник
migrate 0000
не работает. Что касается фальшивой миграции, да, она может вам понадобиться, если вам, например, нужно только отменить (возможно, неправильную) первоначальную миграцию, но история миграции считает, что эта миграция никогда не происходила.Добавьте имя миграции в конце параметров:
источник
00xx
- достаточно. При улучшении и тестировании миграции вы можете иметь обе команды в истории: вперед (без аргументов), назад с предыдущим номером состояния.