July 09, 2003

トラックバック不調の原因は PostgreSQL とゴミ文字

[ Movable Type ]

以前からトラックバックの不調に悩まされていたのだが、なんとなくその原因が分かってきました。

症状としては、トラックバックを受信した際に、受信通知のメールが届くにもかかわらず実際に見てみると、正しく受信できておらずトラックバックの一覧に追加されていないというもの。特に MovableType のログに何か記録されているということもありません。

が、よくみたら syslog にメッセージが残っていました。/var/log/messages に以下のエラーが吐かれていました。

postgres[27571]: [1] ERROR: Invalid EUC_JP character sequence found (0xa42e)

データの保管に PostgreSQL を利用していて、かつこのエラーが吐かれた時間とトラックバックを受信した時間がほぼ一致するので、これが原因なのは間違いなさそうです。

受信したメールを見てみると、トラックバックの概要 (Excecrpt) の文章の末尾の文字が欠けているというか、ゴミが残っているものがあります。これは、MovableType がトラックバックで送信する際に、ある程度の文字数で文章を切り詰めるためだと思います。切り詰め処理のときに文字数をバイト数で数えていて、日本語のような2バイト文字(UTF-8だと3バイト)が途中でぶった切られてしまってゴミが残っているのではないかと。

このゴミを PostgreSQL に格納する際に「EUC-JP じゃんな文字定義されてねーよ」 とエラーを出しているみたいです。

さて、原因はつかめたところでどう直そうか。

BerkeleyDB や MySQL な環境ではこの問題は出ないのでしょうかね。(よく考えたら、BerkeleyDB はファイルベースで文字コード関係なさそうだし、出なそうですな。)

Posted by naoya at July 9, 2003 11:17 PM | トラックバック (2)  b_entry.gif
トラックバック [2件]
TrackBack URL: http://mt.bloghackers.net/mt/suck-tbspams.cgi/261
PostgreSQL使用時にトラックバックを受信できなくなる問題への対処
Excerpt: 以前にエントリ 'トラックバック不調の原因は PostgreSQL とゴミ文字' で記述した PostgreSQL を使っているときにトラックバックが正常に受信できない問題、ちょっと時間を見つけて直してみました。以下、その方法。 とりあえず EUC-JP パッチを当てた MovableType での対...
Weblog: NDO::Weblog
Tracked: August 25, 2003 03:40 PM
TrackBack不具合
Excerpt:  このBlog、TrackBackを受信しても、通知メールは届くが画面に反映されていないことが判明。ちなみに自宅のLinuxサーバー上でMovable Type...
Weblog: J's Diary
Tracked: February 15, 2005 11:46 AM
コメント [0件]