как изменить порядок южных миграций - PullRequest
2 голосов
/ 17 января 2012

В моем приложении store около 50 миграций, некоторые из них schemamigration, а некоторые datamigration. Теперь я хочу запустить 0039_add_column_is_worldwide до 0037_some_values_to_objects. Поэтому я сменил там имя 0037_add_column_is_worldwide и 0039_some_values_to_objects.

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

поднять исключения. Несовместимая история миграции (проблемы) south.exceptions.InconsistentMigrationHistory: Непоследовательная история миграции Доступны следующие опции: --merge: просто попытается выполнить миграцию, игнорируя любые потенциальные конфликты зависимостей.

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

Ответы [ 2 ]

4 голосов
/ 17 января 2012

Миграции хранятся в БД при запуске, поэтому, если вы уже применили эти миграции на юг, они будут потеряны. Ваши альтернативы:

  • очистить таблицу миграции (вызовет миграцию снова, если вы вызовете миграцию)
  • откат этих миграций (до переименования)
  • имитировать эти миграции (переносить --fake, но числа могут конфликтовать с цифрами в БД в любом случае)

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

Если вы все еще в dev и у вас нет базы данных prod, вы всегда можете перезапустить с нуля:

  • флеш юг дБ
  • мигрировать - поддельные
0 голосов
/ 17 января 2012

Я полагаю, ваша база данных уже выполнила "0037_some_values_to_objects".

Я бы сделал это так:

Удалите код из метода forward () и другого метода в «0037_some_values_to_objects». Эта миграция ничего не делает. Теперь добавьте две новые миграции.

Практическое правило. Если одна система выполнила миграцию, не удаляйте ее. Сделайте это пустым.

...