« 長旅のお供に? | Main | MacBook Air 迷走 »

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 になっているけど、そう言うもの?

Trackbacks:

Trackback URL for this entry:
http://www.pid.jp/mt/mt-tb.cgi/88

Post a comment