MySQLの文字化けにハマったので備忘録として残します。
UTF-8の場合の設定は、下記の設定をmy.iniに追加します。
[client]
default-character-set=utf8
[mysqld]
default-character-set = utf8
上記の設定する前に作成されたテーブルでは、一部設定が反映されない。
実際に設定を見たら下記の通りになっていた。
mysql> show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
character_set_databaseがlatin1のままになっていた。
そこで、一度該当のデータベースを削除後、再度作成すると
下記の通りになった。
mysql> show variables like 'character_set%';
+--------------------------+----------------------------+
| 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/share/mysql/charsets/ |
+--------------------------+----------------------------+
この後、日本語の文字列をinsertしても文字化けしなくなった。
参考
MySQL5.1 – リファレンスマニュアル
http://ext.omo3.com/linux/mysql_character_set.html