ブログのデータベースに異常が(たぶん復旧)
昨夜より、ブログの新規投稿やエントリーの更新、また迷惑トラックバックの削除ができない状態になっていました。
※一部改変: (2006.10.11 23:23)
エラー内容から察するに、データベースファイルが壊れたみたいです。
エントリーの更新をしようとすると、こんなエラーメッセージが出て更新できませんでした。
SQLエラーが発生しました database disk image is malformed(1) at dbdimp.c line ○○(多分行番号)
TBの受け取りがなぜか可能だったのと(HiROさんのTB)、迷惑トラックバックなどのログが積み重なっていなかった(つまりTBスパムもはじかれていた(^-^;)ので、データベースだけ何とかすれば治るかもと思い、sqlite→Berkeley DB→sqliteという力技(笑)を敢行。
まず、Ogawa::Memoranda さんのブログで「mt-db-convert.cgi: MTデータベースの相互変換CGIスクリプト」が紹介されていて、早速mt-db-convertのCGIスクリプトを使って、データベースをsqliteからBerkeley DBに一時的に変更してみました。
エントリー数・TB数以上にTBスパムのログデータが13000件近くあって、それも変更されるもんだから結局30分以上かかったのでは(汗)。
Berkeley DBへの変更に無事成功し、ひとまずこのエントリーの初版をアップ。
やはり、動作はのろいです。一度500エラーが出て止まっちゃいました。
っつーか、おかげで同じエントリー2つ保存される始末。
ちょこっとロリポ時代を思い出しました。(^-^;
そして、もう一度sqliteにデータベースを変更しなおして、正常に動作するのを祈りました。
エントリーの更新やTBスパムの削除ができるので、どうやら成功の様子。
ホッと宗を胸をなでおろしました。
今のところ、不具合はなく、以前の状態で運用できてます。めでたしめでたし。
この際なんで、データベースをmysqlにしちゃおうかなあとも思ったけど、変えて効果ありって感じの情報を探しきれなかったので今回はここまでで。
ちなみに、上記のスクリプトはMovable TypeのデータベースをBerkeleyDB、MySQL、PostgreSQL、SQLiteの間で相互に変換することができるスグレモノです。また重宝するかも。
追記: (2006.10.12 01:04)
おまけ。
DBフォルダは保護する必要があるわけね。見逃しとった。
そんなんも影響してるのでしょうか。早速設定しました。