行く記憶の流れは絶えずして

戻ってこないのでメモするところ

続:mysqlの文字コード

前回mysql文字コードを統一したので日本語をDBに入れようとしたらエラー。

[text]

java.sql.SQLException: Incorrect string value: '\xE5\xA4\xA7' for column 'market' at row 1

[/text]

OSの文字コードとかソースファイルの文字コードとか確認したけど、いずれもutf-8で問題なし。

変だと思ってmysql文字コードを確認すると…

[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]

満足したので今日はここまで。