mysqlで外部参照キー制約でリストア失敗

投稿者: | 2018/02/09

外部参照キーを使用したデータベースをリストアしようとするとエラーになります。
勝手にうまいこと戻してくれるのかなとか思っていたけどやっぱり駄目でした。
そこで外部参照キーを無視してリストアします。

mysql>SET FOREIGN_KEY_CHECKS=0;
mysql>use [データベース名];
mysql>SOURCE [ダンプファイル名];
mysql>SET FOREIGN_KEY_CHECKS=1;

これで外部参照キーを無視してリストアしてくれるみたいです。さらに制約がなくなったことで処理も早くなる様子。
リストアが終了したら忘れずに戻しておきましょう。

 

もしくは以前紹介したダンプデータをテーブル毎に分解して実行するやつを2回やるとうまくいくはず。
(1回目必ず失敗するテーブルがあるから2回目は失敗したテーブルを実行してやる)

mysql -u root -p [データベース名] < [ダンプファイル名]

こっちは泥臭いけどどうしようもなくなったらこっちも検討する。
(さまざまな理由でエラーになってうまくいかないことがあるからいろいろな方法を知っておくのは良いことです。)

13.1.17.2 外部キー制約の使用


コメントを残す

メールアドレスが公開されることはありません。