ここ最近、mroongaというMySQL用の全文検索エンジンを使って色々検証しているのですが、文字コードにEUC(というかUJIS)を使うとどうも挙動が怪しいです。
一番困ったのがALTER TABLEを実行するとインデックスが壊れてしまう点で、
- ALTER TABLE … DISABLE KEYS;
- ALTER TABLE … ENABLE KEYS;
と連続で実行するだけで検索不能になります@バージョン2.08。
groonga.logを見ると
invalid utf8 string(1) on grn_str_charlen_utf8
というエラーがモリモリ出ているので、どうもALTER TABLEがUTF8と決めうちで実行されている気がします。
他にもテーブルがUJISでもDBがUTF8で作られていると駄目とか細かい制限があるようで、UTF8の方が気軽に使えて何かと便利っぽいですねぇ・・・。
MySQLにしてもmroongaにしてもデフォルトの文字コードはUTF-8なので、UJISにはあまり力を入れてないということなんでしょうか?
※2012/11/28追記
ストレージモードでなく、InnoDBのラッパーモードで動かしてみたら問題なくALTER TABLE出来ました。
ただ一度ストレージモードの高速さを体感してしまうと、ラッパーモードという選択はしたくないなぁ・・・。