2

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

4

2 回答 2

1

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

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

于 2011-04-05T07:45:00.287 回答
0

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

顺便说一句,我认为南方的最新版本在创建迁移时会要求默认值。您使用哪个版本?

于 2011-04-05T07:55:32.073 回答