私はこのエラーを受け取っています:
1452-子行を追加または更新できません。外部キー制約が失敗します。
私はそれらを見つけて、参照を取り除きます
alter table tillhör drop foreign key kat_id;
しかし、代わりにこのエラーを取得します:
#1025-「。\ recept\tillh @ 1ir」の名前を「。\ recept#sql2-1570-3cb」に変更する際のエラー(errno:152)。
何が間違っていますか?
クエリを実行する前に
SET FOREIGN_KEY_CHECKS=0
完了したら1に設定します。
私は同じ問題に直面しています。この問題を解決することで解決します。つまり、子テーブルからすべてのデータを削除し、正常に完了します。
これは、子テーブルに、親テーブルにない外部キーを持つデータが含まれている場合、つまりPerson(列ID、名前、アドレス)とという2つのテーブルがある場合に発生しますorder(列ID、person_id、order_name); 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)
この問題が発生したのは、外部キーIDフィールドを作成するときに許可されたNULLSを指定するのを忘れていたためです。事後に変更しましたが、値にはすでに0が含まれていました。一致するテーブルで0が見つからなかったため、このエラーが発生しました。修正:ゼロ値をヌルに更新します。
親テーブルから子テーブルにnullを設定するか、同じ値を設定する必要があります。例:子テーブルの最初nam = Derick親テーブル名= Derick