MySQL Tips: "Migrate MySQL database from latin1 to utf8"
MySQLのcharacter setはlatin1がデフォルトなので、そのままデータベース、テーブルを作った後に国際文字の対応が必要になりUTF8に移行する必要が出てくることがある。
ということで、Migrate MySQL database from latin1 to utf8を参考にUTF8に移行してみた。
本当は既存のデータをdumpしてUTF8に変換して読み込むという作業が必要だが、今回はテストデータなのでとりあえずデータベースをdropして作成しなおすことにした。この方法だと既存データは消えてしまうが手続き的には非常に楽。
1) /etcの下にmy.cnfを作成(/usr/local/mysql/support-filesの下のファイルをコピー)
sudo cp /usr/local/mysql/support-files/my-huge.cnf /etc/my.cnf
2) my.cnfを編集
↑に従って
[mysqld]
character-set-server=utf8
default-collation=utf8_unicode_ci
と
[client]
default-character-set=utf8
を追加して
で再起動しようとしたら
ERROR! The server quit without updating PID file
と言われてMySQLが起動できなくなった。
どうやら
default-collation=utf8_unicode_ci
が問題っぽいのでとりあえずコイツをコメントアウトしたら起動できるようになった。
MelangesのDevelopment/Deploymentというブログの「2.3.2 設定ファイルの書き換え」を参考に、ついでに↓も追加。
[mysqldump]
default-character-set = utf8[mysql]
default-character-set = utf8
3) 確認
show variables like "char%";
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Variable_name | Value |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
character_set_client | utf8 |
character_set_connection | utf8 |
character_set_database | utf8 |
character_set_filesystem | binary |
character_set_results | utf8 |
character_set_server | utf8 |
character_set_system | utf8 |
character_sets_dir | /usr/local/mysql-5.5.9-osx10.6-x86/share/charsets/ |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
8 rows in set (0.00 sec)
ふむ。OKっぽい。