MTとMySQL4.1の組み合わせで不具合

このサイトの話ではないのですが、MovableType と MySQL4.1 の組み合わせで、2バイトが文字化けしてしまい、正直ここらへんの事は全然知識がないんで、マジで困っていました。でも、「iandeth.: Movable Type + MySQL 4.1 を組み合わせると日本語が文字化けする不具合/障害の解決方法」を見て何とか回避できました。ホント助かりました、感謝です。

実際に行った作業は、lib/MT/ObjectDriver/DBI 内にあるファイル mysql.pm の52と53行目の間に強調部分を一行挿入。

$driver->{dbh} = DBI->connect($dsn, $cfg->DBUser, $cfg->DBPassword,
    { RaiseError => 0, PrintError => 0 })
    or return $driver->error(MT->translate("Connection error: [_1]",
         $DBI::errstr));
$driver->{dbh}->do("SET NAMES utf8");
$driver;

問題のサイトは UTF-8 なんで、オラオラっと明示的に文字コードを UTF-8 と指定して完了です。

そもそもは、Berkeley DB から MySQL への移行作業にて、mt-db2sql.cgi を叩くと、カテゴリー付近の読み込みでエラーが出て進まなかったことに端を発しました。

Insertion test failed on SQL error Duplicate entry '1-' for key 2

ライセンスを購入してたんで、サポートの方に問い合わてみた所、下記の様な返答がありました。

ご返答いただきました内容から、お問合せのエラーは、MySQL 4.1 以降をお使いで、UTF-8 以外のエンコーディングを使用する際に起こる現象のようです。現在、詳細については確認中ですが、暫定の回避方法として、 Movable Type とデータベースのエンコードを UTF-8にてご利用いただくか、MySQL のバージョンを 3.23.xへと下げていただくことをご案内させていただいております。

MySQL4.1 からは、クライアントとサーバー両方で文字コードの設定を行わなければいけないと。phpMyAdmin で確認したら、「 MySQLの文字セット: UTF-8 Unicode (utf8)」。MT で使用しているデータベースを確認したら、「照会順序」欄が「ujis_japanese_ci」になってる。なんで、テーブルを全部削除して、phpMyAdmin で照会順序を「utf8_general_ci 」と設定し、再度移行してみたとろこ、無事に移行完了。ヒャッホウと浮かれたのも束の間、2バイトが全て文字化け。困っていたところ、上記サイトに出会い無事に解決したっつう事でした。

この記事についての情報

似た内容の記事

この記事に対するトラックバック

トラックバックURL: http://www.lucky-bag.com/mt/mt-tb.cgi/205

avoidnote - MySQL 4.0x Movable Type のデータを MySQL 4.1 へ (2005年8月30日 06:16)

MySQL 4.0x Movable Type のデータを MySQL 4.1 へインポートする際のメモ。 続きを読む

オオカミさんに囲まれた、か弱きヒツジのブログ - DB移管 (2007年4月 7日 22:36)

Internal Server Error 500が多発するため、DBの移管処理... 続きを読む

Comments