杨二

Machine repeats, Human creates

Mysql无法创建外键原因总结

原因

在 Mysql 中创建外键时,经常会遇到问题而失败,这是因为 Mysql 中还有很多细节需要我们去留意,经过各种查阅资料,列出了以下几种常见原因。

  • 两个字段的类型或者大小不严格匹配。例如,如果一个是int(10),那么外键也必须设置成int(10),而不是int(11),也不能是tinyint。另外,你还必须确定两个字段是否一个为signed,而另一个又是unsigned(即:无符号),这两字段必须严格地一致匹配。

  • 试图设置外键的字段没有建立起索引,或者不是一个primary key(主键)。如果其中一个不是primary key的话,必须先为它创建一个索引。

  • 外键的名字不能重复,确保外健名字是唯一的。

  • 你可能设置了ON DELETE SET NULL,但是相关的键的字段又设置成了NOTS NULL。可通过修改cascade的属性值或者把字段属性设置成allow null来解决。(我遇到的就是这种情况)

  • 请确定你的CharsetCollate选项在表级和字段级上的一致。

  • 你可能设置为外键设置了一个默认值,如default=0

  • ALTER声明中有语法错误

总结

总之,出现外键创建错误时,仔细检查数据库表和字段的设计。建议尽量使用工具来设计和创建数据库,这样能减少出错的概率。