2011-10-20 91 views
1

我有兩個表,Parent和Child。 Parent.favorite_child列具有指向Child.id的外鍵約束。並且Child.parent列具有指向Parent.id的外鍵約束。如何在MySQL中使用循環外鍵刪除表格

現在這裏是奇怪的部分。我想將我的子表,其中不包含任何記錄,但MySQL是給我的錯誤:

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

爲什麼MySQL的拋出這個錯誤? Child表中沒有任何記錄可以指向或來自任何東西。

回答

2

您需要先刪除父表的外鍵,然後才能刪除子表:

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

感謝。雖然我發現'SET foreign_key_checks = 0;'工作得更快。 – Cerin

0

我想嘗試下探外鍵約束第一

你可能也想嘗試的命令「顯示引擎InnoDB的狀態」 - 它可能表明,如果有是指從表中的數據有一些遺留問題。

+0

MySQL命令是「SHOW ENGINE INNODB STATUS」 –