空文字列を登録してしまったときの対処方法

うっかり

trac-admin `pwd` ticket_type ""

などとして空文字列をチケット分類やプライオリティに登録してしまい、trac-adminから削除できなくなったときの対処。

Tracのdbディレクトリにこれらを管理するtrac.dbがある。これはsqlite2のデータベースファイルなので、これを直接編集してやれば良い。

#sqlite ./trac.db

sqlite> select * from enum where type="ticket_type";
type|name|value
ticket_type|defect|1
ticket_type|enhancement|2
ticket_type|task|3
ticket_type||4               <- この辺がまずい

sqlite> delete from enum where type="ticket_type" and value=4;
sqlite> select * from enum where type="ticket_type";
type|name|value
ticket_type|defect|1
ticket_type|enhancement|2
ticket_type|task|3

この問題は Trac0.9.4で発生。最新版では対応済みかも。