mysqlで異なるデータベース間でのデータベースの移行ってどうやるんだっけ?
【やりたいこと】
異なるデータベース間でのデータベースの移行。
例えば、db2を新規に作成して、そこにdb1の内容を移行したい。
【当初想定していた実施方法】
①移行先データベースを作成する create database db2; ②移行元データベースdb1のダンプを取得する mysqldump -h移行元DBホスト名 -uユーザ名 -pパスワード -R --hex-blob --databases db1 > db1.sql ③取得したダンプを移行先データベースdb2へ投入する mysql -uユーザ名 -pパスワード db2 < db1.sql
これで完了と思っていたが、これでは、新規にdb2が作成されるだけで、db1へdb2のデータ(tableやview)が投入されない。。。
テーブルのみdumpして、それを投入すればいいかと思って次のようにやってみた。
①テーブルのみdump mysqldump -h移行元DBホスト名 -uユーザ名 -pパスワード -t db1 テーブル1 テーブル2 ・・・・ > db1.sql ②取得したダンプを移行先データベースdb2へ投入する mysql -uユーザ名 -pパスワード db2 < db1.sql
しかし、これはエラー。当然だけど。
ERROR 1146 (42S02) at line 22: Table 'テーブル1' doesn't exist
どこが間違っているのだろうかと思ってdump取得方法を再度見なおしたところ、間違いに気がつく。
次のように「--databases」オプションを指定していた。特定のデータベースをダンプして、異なるデータベースに流し込む場合、これは不要。
mysqldump -h移行元DBホスト名 -uユーザ名 -pパスワード -R --hex-blob --databases db1 > db1.sql
次のように「--databases」オプションを削除してダンプを取得したら成功。
mysqldump -h移行元DBホスト名 -uユーザ名 -pパスワード -R --hex-blob db1 > db1.sql