这是2张桌子。
我正在尝试通过创建外键courses:parent<->child.parent_cid
&lt; =&gt;来创建它们之间的关系。 courses.id
和courses: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;
收到此错误消息
我做错了什么?有什么建议吗?
答案 0 :(得分:1)
我的第一个建议:仅使用字母数字字符和下划线重命名子表和外键约束。
错误消息表示子表中存在无效的外键值。在运行ALTER TABLE
语句之前,您可以告诉MySQL服务器忽略这些值:
set foreign_key_checks = 0;
或者您可以通过在添加约束之前添加缺少的父行或删除无效的子行来修复数据。
答案 1 :(得分:1)
您正在尝试添加外键。该错误意味着子表具有父表中不存在的数据。
在您的情况下cpc.parent_cid_courses.id
。parent_cid
包含错误的值,父字段courses
中没有相应的值。id
。