*いしのなかにいる*

oops ! I am in rock !

MySQLのデータベースの名前を変更する

先日Railsでアプリ作成していて、ふと名称を変更したくなったのでやり方を調べてみました。 というのも、ちょいとアプリの名前を変更したくなったんです。そしたら合わせてフォルダ名とかも変えたくなって…

データベース名の変更がしたい

結論から言うとコマンド1発でポンッという感じにはできなそうです。
(個人的には rename database みたいなコマンドで変更できると嬉しかったのですが。)

なので、先に新しい(変更後)の名前のデータベースを用意して、そこに古い(変更前)のデータベースのデータを移し替えてやる必要があります。 めんどくさい。。。

実際にやった手順は以下の通り。

1.新しいデータベースの作成

まずMySQLにログインして新しいデータベースを作ります。

# MySQLにログイン
$ mysql -u ユーザ名 -p
Enter password:

# 新しいデータベースを作成
mysql> create database 新しいデータベース名 character set utf8;

# MySQLからログアウト
mysql> exit

2.古いデータベースからデータをエクスポート

次にmysqldumpコマンドを使って旧データベースに保存されているデータを抜き出します。

# mysqldumpで保存されているデータをエクスポート
$ mysqldump -u ユーザ名 -p 古いデータベース名 > databse_dump.sql
Enter password:

3.新しいデータベースにデータをインポート

最後に新しいデータベースに2で抜き出したデータを取り込みます。

# 新しいデータベースへデータを取り込む
$ mysql -u ユーザ名 -p データベース名 < 新しいデータベース名 < database_dump.sql
Enter password:

以上、3ステップで完了です。

面倒くさいけど、思ったよりか楽に終わりました。

おまけ

データベース名にハイフンを含める方法

普通にやるとデータベース名にハイフンを含めることができません

mysql> create database ハイフン付きの名前 character set utf8;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-a character set utf8' at line 1

で、どうやるかというと

  • バッククォートでDB名を囲む
mysql> create database `ハイフン付きの名前` character set utf8;
Query OK, 1 row affected (0.01 sec)

これでハイフン付きの名称をつけられました