猫鯖:MySQLの罠に今更はまった

phpBBをLaCoocanから猫鯖に移行する際に気づいたことがある。

LaCoocanのMySQLからダンプしたSQLを猫鯖のMySQLに放り込むと確実に文字化けする。
LaCoocanがEUCで、猫鯖はutf8にしてるから・・・と思ったけど
外で文字コード変換してSQL入れても何故か化けてる。どういうことだ。
おかしいな・・・と思ったら文字コードの照合順序がlatin1_swedish_ciだと?
要するに別言語として解釈されてるわけか、そらー・・・化けるわw

どういうことかとぐぐっても経緯がごちゃごちゃしててよくわからんのだが
とりあえずportsのMakefile見るとデフォルトがlatin1_swedish_ciになってるのが直接の原因っぽい
オプションを入れてあげないと駄目だったのか・・・よく読んでなかった
my.cnfも最初は配置されないとか罠過ぎる
そして、それに気がついたのが今更とか┌(_Д_┌ )┐

最近出たMySQL5対応Webアプリはutf8を明示して入れ物を作ってるようだが
MySQL4時代のアプリケーションはとくに明示しなかったようだ、
そのせいでデフォルトのcollationとしてlatin1_swedish_ciになってると。
DBに格納されてるのは文字コードだから、アプリ側が解釈すれば表向き化けずに表示できるっぽい
だから気がつかなかったんだな

だが他のDBから文字コードを指定してインポートしたり、バックアップ取ろうとしてエクスポートすると
文字化けした上に元に戻せなくなる、と。
データを変換する手段はあるようだが、SQLを組むのが面倒なのでDB消して入れ直すことにした。
アプリからは正常に見えるので、バックアップと復元の仕組みが用意されていれば、その方が早くて確実。
古い方のPsychoStatsはバックアップと復元の仕組みがないから諦めるしかないな
使ってないしアクセスもほとんど無いから大丈夫そうだ。
もともと削除の予定だったし(´ω`)

そんなわけでいろいろメンテナンスしましたよ。

コメント

  1. STACY より:

    メンテ乙です!
    いつもありがとうございます。

  2. NRKR より:

    お疲れ様です!
    いつもお世話になっております

タイトルとURLをコピーしました