Edited at

MySQLでdumpせずに "RENAME DATABASE" を実現する

More than 1 year has passed since last update.

その危険すぎる機能ゆえに、存在を消された幻のコマンド

RENAME DATABASE

でも、どうしてもデータベース名変えたい!っていうケース、あると思います


dumpするやり方

CREATE DATABASE new_db;

して

mysqldump ... -d old_db > old_db.dump

からの

mysql ... -d new_db < old_db.dump

とどめに

DROP DATABASE old_db;

で、実現できます。

が、DBが巨大であればあるほど時間かかりますし、現実的ではなくなります


dumpしないやり方

CREATE DATABASE new_db;

して

RENAME TABLE old_db.table_name TO new_db.table_name

を、全テーブル繰り返す

です!

RENAME ... TO ...は以下のsqlで作成できます

(SHOW TABLESとかで取ってきてもよし)

SELECT DISTINCT CONCAT(

'RENAME TABLE ',
t.table_schema,'.', t.table_name,
' TO ',
"new_db", '.', t.table_name,
';' )
as rename_table
FROM information_schema.tables as t WHERE t.table_schema="old_db";