2014-01-31 3 views
1

У меня была модель, которая определила свой собственный первичный ключ. Я удалил этот первичный ключ, затем Юг правильно добавил в Django «id» по умолчанию в schemamigration/migrate.Django, South и IntegrityError в интерфейсе администратора

При попытке создания экземпляров модели (через интерфейс администратора или иным образом), я получаю:

NOT NULL constraint failed: app_myModel.id 

Метод вперед в миграции говорит:

db.add_column(u'app_myModel', u'id', 
        self.gf('django.db.models.fields.AutoField')(default=1, primary_key=True), 
        keep_default=False) 

Но схемы (sqlite3):

"id" integer NOT NULL); 

Это не похоже на поле AUTOINCREMENT. Не уверен, как восстановить это через миграцию, и не очень хочу ничего, что я не мог бы сделать на производстве, если бы это произошло.

Что случилось? В чем проблема?

Заранее спасибо.

+0

Прочтите форумы, кажется, что на самом деле Юг плохо справляется с ПК, особенно при удалении одного и добавлении другого. Что странно, поскольку миграция, кажется, делегирует генерацию SQL в ORM Django ... –

ответ

1

Кажется, что это должно быть ошибка в Южной, чтобы исправить это, я сделал следующее:

  • откат назад к 0004, проблема была в 0006
  • Удаляется 0006
  • Ран ./ управлять schemamigration приложение --auto --update , обновление 0005
  • Перенесенные в 0005

таблица была сделана в 0005, сделать не знаю, является ли это значительным. Возможно, вам нужно выполнить миграцию назад к миграции, которая создала таблицу, а затем обновить эту миграцию, чтобы она могла правильно определить схему. Процитирую основной автор Юга Эндрю Годвин, обсуждая первичные ключи в Южной:

... что кодовая переместилась на несколько взрослых мужчин до слез

Оказывается, автор знает о проблемах.

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