「Tracの使い方 -Timing and Estimationプラグイン- 」で、プラグインを追加してみましたが、その後「チケットを見る」のメニューからレポートを新たに登録しようとするとエラーが発生します。
エラー内容は、下記
Python Traceback Traceback (most recent call last): File "/usr/lib/python2.3/site-packages/trac/web/main.py", line 406, in dispatch_request dispatcher.dispatch(req) File "/usr/lib/python2.3/site-packages/trac/web/main.py", line 237, in dispatch resp = chosen_handler.process_request(req) File "/usr/lib/python2.3/site-packages/trac/ticket/report.py", line 78, in process_request self._do_create(req, db) File "/usr/lib/python2.3/site-packages/trac/ticket/report.py", line 127, in _do_create "VALUES (%s,%s,%s)", (title, query, description)) File "/usr/lib/python2.3/site-packages/trac/db/util.py", line 50, in execute return self.cursor.execute(sql_escape_percent(sql), args) File "/usr/lib/python2.3/site-packages/trac/db/util.py", line 50, in execute return self.cursor.execute(sql_escape_percent(sql), args) File "/usr/lib/python2.3/site-packages/pyPgSQL/PgSQL.py", line 3111, in execute raise OperationalError, msg OperationalError: ERROR: duplicate key violates unique constraint "report_pkey"
最後の行に、report_pkey(Primary Key)が重複していると言うエラーが出ています。
Tracのレポートは、DBのreportテーブルにより管理されています。
このテーブルのカラムであるidがレポート登録時に重複しているらしい。
ちなみに、このidはreport_id_seqというシーケンスにより番号が管理されています。
report_id_seqの現在の番号を調べてみると・・・
select last_value from report_id_seq; last_value ---------- 19
ちなみにreportテーブルに格納されているid番号の最大値は
select max(id) from report; max ----- 25
はい。これが原因ですね。
Timing and Estimationプラグインをインストールすると幾つかレポートが追加になるのですが、その際にreport_id_seqの番号は更新されないようです。
ですので、手動でreport_id_seqの番号を変更する事で解決できます。
上記の例だと、reportテーブルに格納されているidの最大値は25のため、report_id_seqの現在の番号を26に更新します。
alter sequence report_id_seq restart 26; ALTER SEQUENCE
これで、再度レポートの登録が行えるようになりました。
関連記事
Tracの使い方 - trac-adminの使い方、チケットの管理とロードマップの確認 -
Tracの使い方 - TracWebAdminインストール -
Tracの使い方 - プロジェクトの追加・削除 -
Tracの使い方 -Timing and Estimationプラグイン-
Trac : T&Eプラグインを利用した、期間を限定したレポートの作り方