DB Crash
ここではない自分が管理している MovableType の動作がおかしくなっているように見えたので、調べてみたところ SQLite の DB が壊れていた模様
MT4 にアップグレードする際に DB が修復されるかもと言うわずかな期待を元に、DB をテスト環境にコピーしてアップグレードをトライ
結果は DB の更新中にエラーを吐いて終了 orz
MT では DB 管理のコマンドやツールはないので、sqlite コマンドで見てみる
少なくとも mt_log と mt_comment テーブルが破損しているらしいことは、先のアップグレードトライで判明しているのでその辺りを中心に・・・
mt_log は、所詮ログなので消しちゃえばいいやと言うことで
drop table mt_log
をしてみるがエラー
データが多すぎるのか?
と言うことで
delete from mt_log where log_id < "適当な数字"
でざくっと古めのデータを削除
おぉ、無事に drop も出来るようになった :-)
お次は mt_comment
こっちは重要なので消すわけにはいかない(当たり前だ)
ところがこっちは怪しげなデータの削除もままならない
delete from mt_comment where comment_id = "ほげほげ"
がエラーになる
当然 drop も出来ない(しちゃダメなんだけど)
どうしたものかと思っていたのですが・・・
ダメ元で
> echo '.dump' | sqlite "DB名" > db.dump
> sqlite newdb
sqlite>.read db.dump
してみたところ数十行エラーになったもののなんとか DB の再構築(リストア)が出来たみたい
エラーになったところは概ね SPAM だったので問題ないでしょう。(多分)
始めから dump/restore をしてみれば良かった orz
# 今後はファイルのバックアップだけじゃなくて dump もしておかないとダメってことかな
2008/01/25 追記
かなり重要な Individual Entry Archive の template が破損していたらしく紛失した模様
復旧直後は rebuild 出来ていた気もするのだが・・・
取りあえず Template を作成して動作するようにはなった
今までは template_type が individual だったのだが、今回作成したものは archive になっているけど、そう言うもの?