MySQL 文字コードをUTF8に変更する
・DBの文字コードを確認する
※文字コードはDBごとに保持している
※character_set_system は MySQL が内部的に使用する文字コード。UTF-8で固定。
mysql> SHOW VARIABLES LIKE 'char%'; | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ |
・設定ファイルにデフォルトの文字コードを設定する
# vi /etc/mysql/my.cnf
[client] default-character-set=utf8 [mysqld] character-set-server=utf8
・リスタート
# /etc/init.d/mysql restart
・既存DBの文字コードを変更する(VARCHAR(255)で収まる場合)
・既存columnをバイナリに変換する mysql> ALTER TABLE テーブル名 MODIFY フィールド名 BINARY(255); ・バイナリからUTF8に変換する mysql> ALTER TABLE テーブル名 MODIFY フィールド名 VARCHAR(255) CHARACTER SET utf8; ・character setをUTF8に変更する mysql> ALTER DATABASE DB名 CHARACTER SET UTF8;
・既存DBの文字コードを変更する(VARCHAR(255)で収まらない場合)
・DBをbinaryでダンプを取る。 # mysqldump --default-character-set=binary -u ユーザ名 DB名 --password=パスワード > ダンプの出力ファイルパス ・ダンプファイルのデータを手作業でUTF8に変換する ・ダンプファイルをUTF8でレストアする # mysql -u ユーザ名 -p DB名 --default-character-set=UTF8 < ダンプファイル名 ・character setをUTF8に変更する mysql> ALTER DATABASE DB名 CHARACTER SET UTF8;