読者です 読者をやめる 読者になる 読者になる

TracBlogPlugin が表示できなくなった時の復旧方法

trac

trac をプロジェクトのポータルサイトとして使うために の続き。
上記の環境ではプロジェクトメンバーとの情報共有に TracBlogPlugin を使っている。
WikiStart からもエントリを投稿できるようにしているわけだが、ある時間違えて空のエントリを投稿してしまった。
そうすると下記のようなエラーが出て、以降ブログ記事が表示できなくなった。

Traceback (most recent call last):
  File "c:\python24\Lib\site-packages\trac\web\main.py", line 356, in dispatch_request
    dispatcher.dispatch(req)
  File "c:\python24\Lib\site-packages\trac\web\main.py", line 224, in dispatch
    resp = chosen_handler.process_request(req)
  File "build\bdist.win32\egg\tBlog\web_ui.py", line 216, in process_request
  File "build\bdist.win32\egg\tBlog\web_ui.py", line 267, in _generate_blog
StopIteration

WikiStart の表示もこのとおり。

復旧手順

Wiki のデータがおかしいのだろうと思い、trac-admin で Wiki list とやってみたが、該当するデータはなかった。
その時点で途方に暮れたわけだが、さっき思いついた方法で無事復旧できた。
何のことはない、Wiki ではなくてタグが悪さをしていたらしい。
手順としては、
1. sqlitetrac.db を開く。
2. SELECT * FROM tags; で最新のタグを探す。2006/10/20 23:12 に投稿したエントリは以下のように記録されているはず。

wiki|2006/10/20/23.12|blog
wiki|2006/10/20/23.12|news

3. DELETE FROM tags WHERE name = '2006/10/20/23.12'; で該当するエントリのタグを削除する。