MySQL 5 と相変わらず格闘中…

いやしかし、MySQL 5 に上げて、charset と collation がムズカシイ。

ALTER TABLE hoge CONVERT TO charset utf8

でうまくゆくかと思いきや、そうでもない。
各カラムの collation を定義して行ってもダメだ。

結局、MySQLのキャラクターセット(Ogawa::Memoranda) に書いてあった方法を取らざるを得なかった。

引用すると:

$ mysqldump -uUser -pPassword –compact –default-character-set=binary hageDb > hage.sql
$ sed ‘s/DEFAULT CHARSET=ujis/DEFAULT CHARSET=utf8/g’ hage.sql > hagehoge.sql
(フィールドにcharsetが付いている場合にはその分も変換すること)
(drop & create)
$ mysql -uUser -pPassword hageDb < hagehoge.sql

ここの最後の下りだけ、

$ mysql -uUser -pPassword --default-character-set=utf8 hageDb

にして、ようやくうまく行った。

この手順に入る前に試行錯誤していて、データをおかしくしてしまって、バックアップから戻したり、結構めんどうだったなぁ…。何時間も浪費してしまった 🙁 rz

ちなみに、手動でへんちくりんなことをしていなかったテーブルについては、実は、

/etc/mysql/conf.d/charset.cnf

を作成して、中に、

[mysqld]
default-character-set=utf8

と書くだけでうまく行った。本来、これだけでも良かったのかもしれないが…。

ちなみに、

skip-character-set-client-handshake

も入れてしまうと、ujis で作ってある Xoops 用のデータベースと Xoops の間がうまくゆかなくなって文字化けしてしまった。と、いうか…

そもそも、Xoops 2.0.16aJP を使っていて、Database の Charset を ujis にするとうまくゆかん..。上記と同じような事をずいぶん試したが、ダメ。ujis のままだとうまくゆく。なぜ???

orz orz orz

コメントを残す

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