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

投稿者: | 2009年10月14日

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はバックアップと復元の仕組みがないから諦めるしかないな
使ってないしアクセスもほとんど無いから大丈夫そうだ。
もともと削除の予定だったし(´ω`)

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

猫鯖:MySQLの罠に今更はまった」への2件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください