いつものようにブログに投稿しようとしたところ、「アップデート中にSQLエラーが発生しました: database disk image is malformed(1) at dbdimp.c line 401」をメッセージが出て、投稿できない。
ググってみたところ、どうやらSQLiteのデータベースがパンクしているみたい。さて、困った。
SQLiteは通常のファイルをデータベースとして使っているので、FTPソフトで確認すると、19MBほど。Movable Typeの管理メニューから確認すると、大量の迷惑トラックバックが1万3000件もあった。そりゃパンクするはずだ。
しかしこの時点で、「迷惑コメント/トラックバックを空にする」を押しても、削除できなくなってしまっている。
そこでデータの移し替えで対処することにした。
1.mt-db-convert.cgiを借用
Ogawa::Memorandaさんでmt-db-convert.cgiをダウンロードし、解凍。メモ帳などでmt-db-convert33.cgiを開き、32行目にある「MT::Log」を削除し、自分のサーバにアップロード。実行権を付与。
2.SQLiteからSQLiteにコンバート
先ほどアップロードしたファイルをブラウザで開き、SQLiteからSQLiteにもちろんファイル名を替えてコンバート。これだけでファイルは16MBほどになった。
3.mt-config.cgiの変更
FTPソフトでサーバのmt-config.cgiをダウンロードし、メモ帳などでSQLiteのファイルを指定している箇所(64行目あたり)を新しくコンバートしたファイルを参照するように変更。再びサーバにアップロード。
4.迷惑トラックバックの削除
Movable Typeの管理メニューで迷惑トラックバックを思う存分削除。
5.再びコンバート
迷惑トラックバックを削除しただけではファイルサイズは減らないので、mt-db-convert.cgiを使い、再びSQLiteから新しいSQLiteにコンバート。これでファイルはなんと3MBほどになった。
6.mt-config.cgiの再変更
mt-config.cgiをさらに新たにつくったファイルを参照するように変更してアップロード。
これでご覧のように投稿できるようになったし、心持ち動作が機敏になったような気もする。よかった、よかった。
コメントする