mysqldump が生成したファイルからデータベースをリストアする

普通にダンプファイルを作成するのに

# mysqldump -u root -pmypass mydatabase > mydatabase_dump.sql

こんな感じで行いますよね。

逆にリストアする時は mysql コマンドを使って、

# mysql -u root -pmypass mydatabase < mydatabase_dump.sql

こんな風に書くと思います。

しかし、InnoDB形式で外部参照キーを定義していると、テーブル名称順に出力されたダンプファイルをそのまま流すとテーブル作成に失敗します。

ERROR 1005 at line 11: Can't create table './masters/hoge.frm' (errno: 150)


子テーブルを作成する前に親テーブルを作成しようとしているのですから、当然そうなります。

それを回避するためには、リストア時に外部参照キーのチェックを外す必要があります。

ダンプファイルの先頭行に以下の記述を追加します。

SET FOREIGN_KEY_CHECKS=0;

posted by さわひで at 21:44 | Comment(0) | TrackBack(0) | データベース
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバック