続:mysqlの文字コード
前回mysqlの文字コードを統一したので日本語をDBに入れようとしたらエラー。
[text]
java.sql.SQLException: Incorrect string value: '\xE5\xA4\xA7' for column 'market' at row 1
[/text]
OSの文字コードとかソースファイルの文字コードとか確認したけど、いずれもutf-8で問題なし。
[text]
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
[/text]
前回統一したはずなのにlatin1が混ざってる。なぜ…
風呂に入って落ち着いてやり直すと、character_set_databaseはutf8になってる。
ここでデータベース切り替え(use database ~)してから確認するとlatin1になっていた!
つまり、データベース毎に持ってるのね。
作った時のmysqlの設定を継承?するらしい。
参考:http://interu.hatenablog.com/entry/2013/11/19/120322
データベースの文字コードは以下で変更。
[text]
mysql> alter database データベース character set utf8;
[/text]
テーブルは…一応以下らしい。データ数が少ないので今回は作り直しました。
[text]
mysql> alter table テーブル CHARSET=utf8;
[/text]
満足したので今日はここまで。