UTF-8で動いたからいいやと思っていたけど、よくよく考えたら VARCHAR(5) にUTF-8を入れると何文字入るのかとか基本的な問題を思い出して調べる。
- MySQL リファレンスマニュアル :: 9.5 Unicode のサポート
http://dev.mysql.com/doc/mysql/ja/charset-unicode.html - MyNA Web Site
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ
ぐは。しょうじき、EUCで運用してるデータベースをmysqldumpして、UTF-8に変換したものを入れただけで満足してしまってたけど、これじゃダメだった(あたりまえか)
まず現状を確認。「show variables like 'char%'」と打ってみると character_set_system が utf8 で、それ以外はすべて laten だった。これをutf8にするには、my.cnfで[mysqld]と[client]のdefault-character-set=utf8にするそうな。my.cnfが無かったので作成してhttpd再起動。すると見事に文字化け。
どーしたもんかと悩んでいたけど、「show variables」の結果が選択してるデータベースごとに変わってることに気付いた。フィールドの長さの件もあるし、データベースはいったんdropして入れ直すことに。すると新たな問題がー。mysqldumpしたテキストを入れてる途中にエラーが。UTF-8としてけしからんコードが入ってるのが問題なのか…。使ってないテーブルとか、消えても良いフィールドだったのでザクザク削除。やっと入った。
このあとも問題起こりまくりでいちいち書いてると長くなるので箇条書きで強制終了。