2005年1月24日(月)

movabletype db 破損

そういや trackback 送れてないような…
と気がついて、注意して見ていると

CMS=HASH(0x833eb08) substr outside of string at lib/MT/Serialize.pm line 58.
MT::App::CMS=HASH(0x833eb08) Use of uninitialized value in unpack at lib/MT/Serialize.pm line 58.
MT::App::CMS=HASH(0x833eb08) Use of uninitialized value in substr at lib/MT/Serialize.pm line 59.
MT::App::CMS=HASH(0x833eb08) substr outside of string at lib/MT/Serialize.pm line 59.
MT::App::CMS=HASH(0x833eb08) Use of uninitialized value in addition (+) at lib/MT/Serialize.pm line 60.
MT::App::CMS=HASH(0x833eb08) Use of uninitialized value in concatenation (.) or string at lib/MT/Template/Context.pm line 899.

とか一瞬エラー吐いているのを発見(絶対パス名を一部隠蔽)。
調べてみるとバークレーDBの破損らしい。心当たりは…、いつぞやの wiki 風 plugin だな……。 ちらっと試したらエンコード決めうちで妙な文字列混ぜられて、そのエントリはあわてて消したんだが、 DB には妙なのが入ったってことだろう。

ってんで復旧方法を調べると export しておいて、 db/ 以下を削除して import で書き戻す、とやるらしい。自分で試してみたところでは export した中に含まれるのは blog のエントリ本体・それにつけられたコメント・あるいは打ち込まれた trackback ping の3つのようだ。さらに、カテゴリもこの内容から復旧しているようなので、 db/ から削除したのは entry.* comment.* tbping.* category.* 。 export した奴のエンコードを念のためそろえておいて(俺の場合は euc。ファイル内でエンコードが混在していたくさい)、 import/ に転送して、インポートしてリビルド。
一見直った風だが大丈夫かな?

参考:blog:N@TURE BRAIN: バークレーDB破損

[referer: [an error occurred while processing this directive]]

あわせて読みたい