私信  •  关注

Community Oliver

Community Oliver 最近创建的主题
Community Oliver 最近回复了
8 年前
回复了 Community Oliver 创建的主题 » mysql-错误1215:无法添加外键约束[重复]

当由于引用的表使用myisam引擎而发生此错误时,此答案提供了一种快速转换数据库的方法,以便所有django模型表都使用innodb: https://stackoverflow.com/a/15389961/2950621

这是一个名为convert_to_innodb的django管理命令。

8 年前
回复了 Community Oliver 创建的主题 » mysql-错误1215:无法添加外键约束[重复]

另一个原因:如果你使用 ON DELETE SET NULL 全部的 外键中使用的列必须允许空值。有人在里面发现了这个 this question

据我所知,数据完整性不会有问题,但MySQL似乎不支持这个特性(在5.7中)。

8 年前
回复了 Community Oliver 创建的主题 » mysql-错误1215:无法添加外键约束[重复]

错误1215是一个恼人的错误。 Explosion Pill's answer 涵盖基本知识。你要确保从那里开始。然而,还有更多更微妙的情况需要注意:

例如,当您尝试链接不同表的主键时,请确保提供正确的 ON UPDATE ON DELETE 选项。例如。:

...
PRIMARY KEY (`id`),
FOREIGN KEY (`id`) REFERENCES `t` (`other_id`) ON DELETE SET NULL
....

不会飞,因为主键(例如 id )不可能是 NULL

我确信,在添加此类约束时,还有更多类似的微妙问题,这就是为什么遇到约束错误时,总是确保约束及其含义在当前上下文中有意义。祝你的错误1215好运!