LoginSignup
4
3

More than 5 years have passed since last update.

[MySQL] mysqldumpコマンドのデータベース指定に関する調査

Posted at

調査の発端

とある検証のため、運用サーバーのMySQL(データベース名:mysqldb)から出力したダンプファイルを、以下のコマンドで検証サーバーのMySQLにインポートを実施しました。

mysql -u hogehoge -p mysqldb_test < mysqldump_yyyymmdd.sql

比較検証用に新規に作成したデータベース(mysqldb_test)にインポートしたかったのですが、結果として、常に同じデータベース(mysqldb)にインポートされてしまう、という不思議な現象が発生したため、調査した内容と対処方法について記述します。
もし、私と同じ現象が出てしまった方に一助となれば幸いです。

調査内容

mysqldumpコマンドでデータベースを指定する場合、databaseオプション(--database)で指定する方法と指定しない方法で違いがあるか調査しました。
(今回のケースでは、データベースの指定は1つのみとします)

-- (1)データベースオプション指定あり
mysqldump -u hogehoge -p --database mysqldb > mysqldump_yyyymmdd_01_dboption.sql

-- (2)データベースオプション指定なし
mysqldump -u hogehoge -p mysqldb > mysqldump_yyyymmdd_02_nonoption.sql

調査結果

(1)と(2)のmysqldumpコマンドで出力されるdumpファイルの違いは、CREATE DATABASEが出力されるかどうかの違いだけでした。

(1)のdatabaseオプションを明記した場合は、以下の通り、CREATE DATABASEとUSE文が追加されます。

出力例
--
-- Current Database: `mysqldb`
--

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysqldb` /*!40100 DEFAULT CHARACTER SET latin1 */;

USE `mysqldb`;

対処方法

現象の起きたダンプファイルの内容を確認してみると、案の定、上記CREATE DATABASEとUSE文が出力されていたため、viコマンドでダンプファイルを開き、CREATE DATABASEとUSE文を削除し保存しました。
保存したダンプファイルをインポートすることで、期待通り別名のデータベースにインポートすることができました。

参考サイト

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3