共计 946 个字符,预计需要花费 3 分钟才能阅读完成。
今天就跟大家聊聊有关 MySQL 数据库中建立外键失败的原因有哪些,可能很多人都不太了解,为了让大家更加了解,丸趣 TV 小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
MySQL 数据库建立外键失败的原因有哪些
1. 两个字段的类型或者大小不严格匹配,例如,如果一个是 INT(10), 那么外键也必须设置成 INT(10), 而不是 INT(11) 也不能是 TINYINT. 你得使用 SHOW 命令来查看字段的大小,因为一些查询浏览器有时候把 int(10) 和 int(11) 都显示为 integer。另外,你还必须确定两个字段是否一个为 SIGNED, 而另一个又是 UNSIGNED, 这两字段必须严格地一致匹配,更多关于 signed 和 unsigned 的信息,请参阅:http://www.verysimple.com/blog/p=57。
2. 你试图引用的其中一个外键没有建立起索引,或者不是一个 primarykey, 如果其中一个不是 primarykey 的,你必须为它创建一个索引。
3. 外键的名字是一个已经存在的一个键值了,这个时候,你应该检查你的数据库以确保外健名字是唯一的,或者你在键名后面加上几个随机的字符以测试是否是这个原因。
4. 其中一个或者两个表是 MyISAM 引擎的表,若想要使用外键约束,必须是 InnoDB 引擎,(实际上,如果两个表都是 MyISAM 引擎的,这个错误根本不会发生,但也不会产生外键),你可以通过查询浏览器来设置表的引擎类型。
MySQL 数据库建立外键失败的原因有哪些
5. 你可能设置了 ONDELETESETNULL, 但是相关的键的字段又设置成了 NOTSNULL 值。你可能通过修改 cascade 的属性值或者把字段属性设置成 allownull 来搞定这个 bug.
6. 请确定你的 Charset 和 Collate 选项在表级和字段级上的一致。
7. 你可能设置为外键设置了一个默认值,如 default=0。
8. 在这个关系里面,其中的一个字段是一个混合键值中的一个,它没有自己独立的索引,这时,你必须为它创建一个独立的索引。
9.ALTER 声明中有语法错误。
看完上述内容,你们对 MySQL 数据库中建立外键失败的原因有哪些有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注丸趣 TV 行业资讯频道,感谢大家的支持。