我在尝试删除外键时遇到了一些麻烦。有人可以帮忙吗?
这是我的SHOW CREATE TABLE catgroup:
| catgroup | CREATE TABLE `catgroup` (
`catgroupid` int(11) NOT NULL AUTO_INCREMENT,
`category_id` int(11) NOT NULL,
`group_id` int(11) NOT NULL,
PRIMARY KEY (`catgroupid`),
KEY `category_id` (`category_id`),
KEY `group_id` (`group_id`),
CONSTRAINT `catgroup_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `cat
s` (`cid`) ON UPDATE CASCADE,
CONSTRAINT `catgroup_ibfk_2` FOREIGN KEY (`group_id`) REFERENCES `groups
d`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8 |
这就是我试图删除外键的方式:
ALTER TABLE catgroup DROP FOREIGN KEY group_id_ibfk_2;
这是错误信息:
错误1025(HY000):将“。\ asset_base \ catgroup”重命名为“时出错” ” \ asset_base \
sql2-16b4-4'(错误号:152)
我做错了什么?
答案 0 :(得分:7)
您的外键名称错误。请改为catgroup_ibfk_2
。
奇怪的错误消息已报告为bug in MySQL。
答案 1 :(得分:2)
古代帖子,但FWIW我刚刚发现外键名称区分大小写...
答案 2 :(得分:0)
[admin@gold ~]$ perror 152
MySQL error code 152: Cannot delete a parent row
更改InnoDB表上的索引/约束涉及删除表并重建它。您可能需要删除指向这些父行的另一个表上的约束,然后才能执行此操作。