概要
初歩的なミスで行き詰まってしまったので共有します。
mysql -u root -p restore < example.dump
上記のようにmysqlコマンドを使用し、ダンプファイルからデータをインポートしたが、データが入ってこない。
実行した手順
リストア用のデータベースを新規作成
mysql -u root -p -e "CREATE DATABASE restore;"
dumpファイルを実行
mysql -u root -p restore < example.dump
実行後、エラーはではなかったが、phpmyadminで確認してみるとデータが空のままである。
結論
dumpファイル内で、異なるデータベースを参照するようになっていた。
example.dump
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `another_database` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
USE `another_database`;
中身を見てみると、設定の中でUSEするテーブルを変更していた。
mysqlコマンドで実行先を指定していれば絶対にそのデータベースへ入ると思っていたので、dumpファイル内で実行先を変更できることは盲点だった。
以下のように書き換えれば解決である。
example.dump
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `restore` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
USE `restore`;
幸い事故には至らなかったが、実行先のファイルが稼働中だったら危なかったので、皆様も気を付けてほしい。