tracのdbがぶっこわれた模様です
おひさしぶりです。
ちょっと放置してた trac をひさしぶりに覗いてみると
Trac detected an internal error: DatabaseError: database disk image is malformed
まじかー。
リポジトリは見えるけどチケットのDBがぶっこわれている模様
どーせーっちゅうねん!!!pythonわからにょ。。。
とりあえずsqliteを攻めてだめだったらあきらめ。。。うーん。
まぁ、やれる事はやってみよう
integrity checkしてみる
$ sqlite3 trac.db "PRAGMA integrity_check;" *** in database main *** Multiple uses for byte 386 of page 638 SQL error: database disk image is malformed
うん。見事。
民間療法を試す
一回dumpしてimportしなおすという民間療法を試してみる
$ sqlite3 trac.db ".dump" | sqlite3 trac.db.new $
あら、おとなしいこと。
で?民間療法の効果は?
$ sqlite3 trac.db.new "PRAGMA integrity_check;" ok
ワロタ
てか仏様ありがとう!!!
と、思ったら???
さっそくウキウキ(死語)でtracを覗いてみると。。。
Trac detected an internal error: OperationalError: no such table: version
仏様のバカヤロウ!!!
versionがないだと?
作り直したDB
$ sqlite3 trac.db SQLite version 3.3.6 Enter ".help" for instructions sqlite> .tables attachment milestone session ticket_change auth_cookie node_change session_attribute ticket_custom component permission system wiki enum revision ticket
元々のDB
$ sqlite3 trac.db.bak SQLite version 3.3.6 Enter ".help" for instructions sqlite> .tables attachment node_change session_attribute version auth_cookie permission system wiki component report ticket enum revision ticket_change milestone session ticket_custom
versionだけじゃなくてreportもないじゃん。
version, reportの中には何が入っていたのか?
とりあえずいきなりselectとか恐いので行数を見てみる
sqlite> select count(*) from version; 21 sqlite> select count(*) from report; 8
ふむ。select * from...してみますかね。
とかいいながらdumpする
BEGIN TRANSACTION; CREATE TABLE version ( name text PRIMARY KEY, time integer, description text ); INSERT INTO "version" VALUES('0.1.0-RC1', 1176906922, ''); INSERT INTO "version" VALUES('0.1.0-RC2', 1180434776, ''); INSERT INTO "version" VALUES('0.1.0-RC3', 1180642142, ''); INSERT INTO "version" VALUES('0.1.0-RC4', 1180646377, ''); INSERT INTO "version" VALUES('0.1.0', 1181046437, ''); INSERT INTO "version" VALUES('0.1.1', 1181301146, ''); INSERT INTO "version" VALUES('0.1.2', 1181568710, ''); INSERT INTO "version" VALUES('0.1.3', 1181847006, ''); INSERT INTO "version" VALUES('0.2.0', 1184591297, ''); INSERT INTO "version" VALUES('0.2.1', 1184757962, ''); INSERT INTO "version" VALUES('0.2.2', 1185174502, ''); INSERT INTO "version" VALUES('0.3.0', 1188560129, ''); INSERT INTO "version" VALUES('0.2.3', 1185350102, ''); INSERT INTO "version" VALUES('0.2.4', 1185428476, ''); INSERT INTO "version" VALUES('0.4.0', 1199775825, ''); INSERT INTO "version" VALUES('0.4.1', 1200373083, ''); INSERT INTO "version" VALUES('0.4.2', 1207314697, ''); INSERT INTO "version" VALUES('0.4.3', 1215505976, ''); INSERT INTO "version" VALUES('0.4.4', 1225958638, NULL); INSERT INTO "version" VALUES('0.5.0', 1234940400, NULL); INSERT INTO "version" VALUES('0.5.1', 1235031200, NULL); COMMIT;
あぁ。そういう事?ふーん。
じゃ、reportは。。。割愛します。
まぁともあれこれ、貼り付ければいいだけじゃね?
という事でversionのdumpを直したつもりのDBへ貼り付ける。
貼り付いた。
でtracを見てみる。。。。。
おおおおおおお、復活ぅぅぅぅぅ!!!!
reportはいらないのかな?
気持悪いのでreportもdumpを貼り付けておきました。
なんで一回でうまくいかなかったのかが謎だけど。。。
いやーよかったよかった。