我已将一个外键添加到模型的用户,但是当我尝试使用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迁移模型。
答案 0 :(得分:1)
运行schemamigration
命令时,应该会询问有关默认值的一些问题。如果你给出了错误的答案,可能会导致你描述的问题。
如果您可以打开实际的迁移文件并抓住顶部附近的forward
方法,并在此处发布,我应该能够找出问题所在。
答案 1 :(得分:0)
我猜您遇到了问题,因为您指定了不可为空的用户字段而未提供默认值。您需要提供默认值,例如。 user = models.ForeignKey(User, default=foo)
或允许用户字段user = models.ForeignKey(User, null=True)
顺便说一下,我认为南方的最新版本在创建迁移时会询问默认值。你使用的是哪个版本?