Ошибка с югом при переносе изменений в модель - PullRequest
2 голосов
/ 04 апреля 2011

Я добавил внешний ключ для пользователя в модель, но когда я пытаюсь перенести базу данных с помощью South, я получаю следующую ошибку:

_mysql_exceptions.OperationalError: (1067, "Invalid default value for 'user_id'")

South говорит мне, что я могудля восстановления после ошибки, запустив команду SQL:

! You *might* be able to recover with:   = 
    ALTER TABLE `main_deal` DROP COLUMN `user_id` CASCADE; []

Я попытался запустить команду SQL, но получаю следующую ошибку:

#1091 - Can't DROP 'user_id'; check that column/key exists

Нужно ли добавить 'user_id 'для моей модели и установите значение по умолчанию 1?

Редактировать: Вот код, который я добавил в свою модель, чтобы это произошло:

user = models.ForeignKey(User)

Затем я перенесмодель, использующая Юг.

Ответы [ 2 ]

1 голос
/ 05 апреля 2011

Когда вы запустили команду schemamigration, вам нужно было задать несколько вопросов о значениях по умолчанию.Если вы дали неправильный ответ, это могло вызвать проблему, которую вы описали.

Если бы вы могли открыть сам файл миграции и взять метод forward в верхней части и опубликовать его здесь, я бы смог выяснить, что пошло не так.

0 голосов
/ 05 апреля 2011

Полагаю, у вас проблема, потому что вы указали необнуляемое поле пользователя без указания значения по умолчанию.Вы должны либо предоставить значение по умолчанию, например.user = models.ForeignKey(User, default=foo) или разрешить пустые значения для пользовательского поля user = models.ForeignKey(User, null=True)

Кстати, я думаю, что последняя версия на юге запрашивает значения по умолчанию при создании миграции.Какую версию вы используете?

...