phpMyAdminを使用してデータをエクスポートしましたが、データをインポートすると次のエラーが発生します。
#1452-子行を追加または更新できません:外部キー制約が失敗します
それに応じてデータを設定できますが、エラーは発生しません。しかし、これを行うためのより良い方法はありますか?phpMyAdminのいくつかのオプションを無効にしたり、SQLにクエリを追加したりするようなものですか?
phpMyAdminを使用してデータをエクスポートしましたが、データをインポートすると次のエラーが発生します。
#1452-子行を追加または更新できません:外部キー制約が失敗します
それに応じてデータを設定できますが、エラーは発生しません。しかし、これを行うためのより良い方法はありますか?phpMyAdminのいくつかのオプションを無効にしたり、SQLにクエリを追加したりするようなものですか?
問題は、pmaが挿入行の順序を気にしないことです。そのため、FK行がまだインポートされていないFKでテーブル行が挿入されることがあります。
これを解決するにはDisable Foreign Key Checks
、PhpMyadminからエクスポートするときにチェックボックスを使用します。または、自分で設定します。
SET FOREIGN_KEY_CHECKS=0;
そして最後に:
SET FOREIGN_KEY_CHECKS=1;
そのエラー(Cannot add or update a child row: a foreign key constraint fails
)はMySQLFKDocで参照されています
2つのテーブル間に参照を追加するには、条件が既存のデータに適合している必要があります。
つまり、と言うとtable1.id = table2.id
、とのすべてのIDが一致する必要がtable1
あります。table2
これを解決するには、一致しない行を削除または修正する必要があります。
例:
table1.id | table2.fk
1 | 1 ok
2 | null error
3 | 4 error if id 4 is not in table1