17

次のエラーが表示されます。

1452 - 子行を追加または更新できません: 外部キー制約が失敗します。

私はそれらを見つけて、参照を取り除こうとしました

alter table tillhör drop foreign key kat_id;

しかし、代わりにこのエラーが発生します:

#1025 - '.\recept\tillh@1ir' から '.\recept#sql2-1570-3cb' への名前変更エラー (errno: 152)。

私は何を間違っていますか?

4

4 に答える 4

37

クエリを実行する前に

SET FOREIGN_KEY_CHECKS=0

完了したら 1 に設定します。

于 2013-09-23T17:39:05.823 に答える
15

私は同じ問題に直面しています。この問題をクリアすることで解決します。つまり、子テーブルからすべてのデータを削除し、正常に完了しました。

これは、親テーブルにはない外部キーを持つデータが子テーブルに含まれている場合に発生します。つまり、Person (列 ID、名前、住所) とorder (列 ID、person_id、order_name) という 2 つのテーブルがある場合です。order.person_id は person.id の外部キーであり、 order テーブルには person テーブルに存在しない person_id が含まれています

次のクエリを使用してこれを解決できます

Delete from order where person_id NOT IN (select id from person where person.id = order.person_id)
于 2013-12-02T11:50:21.413 に答える