2011-10-20 13 views
1

私は2つのテーブル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はこのエラーを投げていますか?文字通り、子テーブルには何かが指し示すことができるレコードはありません。

答えて

2

はあなたが子テーブルを削除する前に、まず親テーブルの外部キーをドロップする必要があります。私は `SET foreign_key_checks = 0;`が見つかりましたが、より速く働いた。
+3

ありがとう: – Cerin

0

私はあなたにも、コマンド「SHOW ENGINE INNODB STATUSを」しようとする場合があります

最初の外部キー制約を削除しようと思います - テーブルがデータを持っていたときから、いくつかの残りの問題がある場合、それは示すかもしれません。

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

MySQLのコマンドは、「SHOW ENGINE INNODB STATUSを」です –