昨日から、ハマっているMySQLデータベースの移行作業ですが、
FreeBSD上のMySQL3.23のEUCで作られたXOOPSのデータベースを、
Linux上のMySQL5.0.27に移行しました。

ですが、これが、文字化けして、スムーズに移行は出来なかった。

いろいろ試行錯誤し、

  • 新規のデータベースを接続照合順序を変えてみた
  • MySQLの文字セットを変えてみた
  • インポートする時に、コピペで試してみた
  • エクスポートでファイルで保存したファイルをインポートしてみた
  • php.ini内でmbstringsを定義してみた

mbstringsの指定で、イケるかと思ったんですが、ダメでしたねぇ。
もちろん、apache等は再起動してます。

それで、my.cnf内を修正することで、ようやく文字化け解消出来ました。
/etc/my.cnf内の、default-character-setをutf8からujisに変えただけです。

default-character-set = ujis
skip-character-set-client-handshake   <–おまじないでコイツも追加しておいた

これで、今週中には、サーバ入れ替えが出来そうだ。

ちなみに、MySQLの文字セットと照合順序でEUCの場合、
eucjpms_bin、eucjpms_japanese_ci があるので、これを選択しそうになりますが、これは、Windows用のujisなので、UNIXのEUCの場合には、ujis_binかujis_japanese_ciを選びましょう。