2016-05-02 4 views
1

Вот мой текущий статус:Ошибки при откате к предыдущей миграции

mainapp 
[X] 0001_initial 
[X] 0002_authorprofile_uuid 
[X] 0003_auto_20151107_1243 
[X] 0004_article_approved 
[X] 0005_auto_20151129_0950 
[X] 0006_article_category 
[X] 0007_auto_20160501_1601 

Я хочу, чтобы вернуться в 0005. Тем не менее, когда я бегу /manage.py migrate mainapp 0005_auto_20151129_0950 я получаю ошибку ValueError: The database backend does not accept 0 as a value for AutoField.

Это ошибка Я исправил в models.py, поэтому я хочу вернуться к 0005 и начать новую работу, а также выполнить миграцию.

class Article(models.Model): 
    category = models.ForeignKey(Category, default = 1) #trying to add this and set default value. It was first set to 0 but changed it to 1 after it failed 
+0

Извините, теперь у меня есть лучшее понимание реальной проблемы. После того, как вы изменили поле с Auto на ForeignKey, вы, похоже, закончили тем, что вставляли в это поле 0. Mysql, например, не позволяет 0 в автоматических полях, если вы пытаетесь вставить нуль, он вставляет следующее значение автоматического увеличения, поэтому проблема не в коде, а в данных, или это то, что мне кажется. – e4c5

+0

@ e4c5 в основном 0007 считает, что поле находится в базе данных, но это вообще-то нет. там нет колонки. поэтому, если я изменяю значение по умолчанию, оно не может, потому что столбец не существует. если я пытаюсь удалить поле, это невозможно, потому что его не существует – User

+0

@ e4c5 что делать, если я просто добавляю столбец с помощью SQL-команд, а затем переношу, чтобы удалить его? то падение будет работать. – User

ответ

0

Мое предложение, чтобы открыть свой SQL консоль и сбросить django_migrations таблицу.

DELETE FROM django_migrations WHERE app='mainapp' 

Затем убедитесь, что все ваши файлы в папке миграции/были проверены в контроле версий и удалены! Затем сделайте

./manage.py makemigrations mainapp 
./manage.py migrate mainapp --fake 

Если --fake не работает, пришло время для отчаянной меры и --fake-initial но это очень вероятно, что при развертывании приложения некоторые где вы собираетесь пройти через этот весь процесс снова :(

Смежные вопросы