MySQL奇怪的FK错误

时间:2012-07-25 14:26:37

标签: mysql sql foreign-keys

这是2张桌子。

Full size image

enter image description here

我正在尝试通过创建外键courses:parent<->child.parent_cid&lt; =&gt;来创建它们之间的关系。 courses.idcourses:parent<->child.child_cid&lt; =&gt; courses.id

SQL看起来像那样

ALTER TABLE `courses: parent<->child` ADD CONSTRAINT `cpc.parent_cid_courses.id` FOREIGN KEY (`parent_cid`) REFERENCES `courses` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE `courses: parent<->child` ADD CONSTRAINT `cpc.child_cid_courses.id` FOREIGN KEY (`child_cid`) REFERENCES `courses` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

收到此错误消息

enter image description here

我做错了什么?有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我的第一个建议:仅使用字母数字字符和下划线重命名子表和外键约束。

错误消息表示子表中存在无效的外键值。在运行ALTER TABLE语句之前,您可以告诉MySQL服务器忽略这些值:

set foreign_key_checks = 0;

或者您可以通过在添加约束之前添加缺少的父行或删除无效的子行来修复数据。

答案 1 :(得分:1)

您正在尝试添加外键。该错误意味着子表具有父表中不存在的数据。

在您的情况下cpc.parent_cid_courses.idparent_cid包含错误的值,父字段courses中没有相应的值。id