将更改迁移到模型时,South出错

时间:2011-04-04 07:16:19

标签: mysql sql django mysql-error-1067 mysql-error-1091

我已将一个外键添加到模型的用户,但是当我尝试使用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)

然后我使用South迁移模型。

2 个答案:

答案 0 :(得分:1)

运行schemamigration命令时,应该会询问有关默认值的一些问题。如果你给出了错误的答案,可能会导致你描述的问题。

如果您可以打开实际的迁移文件并抓住顶部附近的forward方法,并在此处发布,我应该能够找出问题所在。

答案 1 :(得分:0)

我猜您遇到了问题,因为您指定了不可为空的用户字段而未提供默认值。您需要提供默认值,例如。 user = models.ForeignKey(User, default=foo)或允许用户字段user = models.ForeignKey(User, null=True)

的空值

顺便说一下,我认为南方的最新版本在创建迁移时会询问默认值。你使用的是哪个版本?