0

这里有2张桌子。

全尺寸图片

在此处输入图像描述

我试图通过创建外键courses:parent<->child.parent_cid<=>courses.idcourses:parent<->child.child_cid<=>来创建它们之间的关系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;

收到此错误消息

在此处输入图像描述

我究竟做错了什么?有什么建议么?

4

2 回答 2

1

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

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

set foreign_key_checks = 0;

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

于 2012-07-25T14:34:47.520 回答
1

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

在你的情况下cpc.parent_cid_courses.idparent_cid有错误的值,父字段中没有对应的值coursesid.

于 2012-07-25T14:35:43.093 回答