trac/BrokenDB

trac.db が壊れたらどうするか

trac はバックエンドに  SQLite を使っていて,何らかの拍子に壊れてしまうことがあります. 壊れると,たとえば以下のようなメッセージを出します.

Trac detected an internal error:
   database disk image is malformed

で,自分の場合はどうだったかというと,quota over でした…. 要らないファイルを消して,quota 溢れを解消したら,何もしなくても戻りました.

sqlite

まぁでもとりあえず見てみたので内容だけ. sqlite を使えば,SQL をたたいて DB を扱えます. 「apt-get install sqlite」で sqlite が入ります. 「sqlite trac.db」で,中をさわれます.実際以下のことをやってみました.

% sqlite trac/db/trac.db
SQLite version 2.8.16                 
Enter ".help" for instructions
sqlite> .tables
attachment     lock           report         ticket         wiki         
auth_cookie    milestone      revision       ticket_change
component      node_change    session        ticket_custom
enum           permission     system         version      
sqlite> delete from session;
SQL error: database is full

まぁこれでピンときて quota を疑ってみたらビンゴでした.