MySqlの文字コード
OracleDBからMySqlにデータを移行したことろ文字化けしている。
しまった。文字コードの設定をしていなかったことを思い出した。。。
MySqlにログインして文字コードを調査。
>show variables like ‘character_set%’;
+————————–+—————————————-
| Variable_name | Value
+————————–+—————————————-
| character_set_client | cp932
| character_set_connection | cp932
| character_set_database | latin1
| character_set_filesystem | binary
| character_set_results | cp932
| character_set_server | latin1
| character_set_system | utf8
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.5
+————————–+—————————————-
思ったとおり、「latin1」になっている。
「utf8」に変更しないと。
すでにデータを突っ込んでいるので先ずはデータをファイルにダンプする。
#mysqldump -u [ユーザ] -p[パスワード] lawyerseek –default-character-set=latin1 > dump.sql
※「–default-character-set=latin1」を指定しないとファイルにn出力した時点で文字化けしてしまう。
出力したファイルをテキストエディタで開き「latin1」を「utf8」に置換する。
次にMySqlの設定を変更する。
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
※Linuxは「/etc/my.cnf
」にある。
を開き、以下のように文字コードの設定を追加する。
※Windowsの場合はなぜか、my.iniを「C:\Windows」以下にも配置しない反映されない。
[client]
default-character-set=utf8
[mysqld]
character_set_server=utf8
MySqlを再起動する。
# net mysql stop
#net mysql start
※Linuxは「/etc/init.d/mysqld restart」でOK。
文字コード間違って作成されているデータベースを削除する。
>drop database lawyerseek;
文字コードを指定してデータベースを再作成
>create database lawyerseek default character set utf8;
先ほどバックアップして、文字コードの置換を行ったダンプファイルを読み込む。
>mysql -u lawyerseek -plawyerseek lawyerseek < _dump.sql
これで文字コードが直っているはず。