如何在MySQL中删除具有循环外键的表

时间:2011-10-20 23:03:36

标签: mysql sql database

我有两张桌子,父母和孩子。 Parent.favorite_child列具有指向Child.id的外键约束。 Child.parent列有一个指向Parent.id的外键约束。

现在这是奇怪的部分。我正在尝试删除我的Child表,不包含任何记录,但是MySQL给了我错误:

ERROR 1217: Cannot delete or update a parent row: a foreign key constraint fails
SQL Statement:
drop table `mydatabase`.`Child`

为什么MySQL会抛出此错误? Child表中几乎没有任何记录可以指向或来自哪些记录。

3 个答案:

答案 0 :(得分:3)

您需要首先删除父表上的外键,然后才能删除子表:

ALTER TABLE `Parent` DROP FOREIGN KEY `Parent_ibfk_1` ;

答案 1 :(得分:0)

我首先尝试删除外键约束

您可能还想尝试命令“show engine innodb status” - 它可能表示表中有数据时是否存在遗留问题。

答案 2 :(得分:0)

尝试从表中删除外键约束。

  

尝试执行此操作,如图所示   u could see that there are foreign key constraints in yellow shading

     

只需右键单击该键部分,然后删除外键即可。   inside red section the image,然后单击“确定”以删除外键,就是这样,您现在可以使用简单的方法删除该列       AlTER table table_name drop column column_name;

谢谢。