Как предполагается восстановиться после неудачной миграции на Юг?

Я использую South (версия 0.6, упакованная в Ubuntu Lucid Lynx) для управления миграцией базы данных в Django, и в настоящее время использует SQLite в качестве серверной части. Я столкнулся с ситуацией, когда я сгенерировал миграцию, чтобы добавить столбец с:

./manage.py startmigration myapp --auto added_new_column

... который сгенерировал миграцию, которая выглядела разумной. Однако, когда я затем применил миграцию с помощью:

./manage.py migrate myapp

Я получил ошибку, потому что столбец, который я добавлял, был не NULL, но я не указал значение по умолчанию:

ValueError: You cannot add a null=False column without a default value.

Что делать, если миграция не удалась таким образом, и вы хотите вернуться и восстановить ее? (То, что я сделал на практике, а именно удалить миграцию и создать новую, создало еще несколько проблем.) Возможно, я пропустил что-то очевидное в документации по этому поводу...


person Mark Longair    schedule 27.01.2011    source источник
comment
вы можете использовать migrate app --list, чтобы увидеть, какую миграцию вы используете   -  person Dominique Guardiola    schedule 27.01.2011


Ответы (1)


В этом случае миграция не удалась и не была записана в базу данных, поэтому вы можете безопасно удалить старую и создать ее снова. Также вы можете попробовать использовать более новую южную версию, я полагаю, что они добавили проверку по умолчанию для полей NOT NULL при создании шага.

person Dmitry Shevchenko    schedule 27.01.2011
comment
Спасибо - я думал, что startmigration myapp --auto повлиял на БД, но я думаю, что на самом деле это было сделано более поздними шагами, которые я пробовал. - person Mark Longair; 27.01.2011