株式会社キャッチアップで働くエンジニアのブログです。

技術雑記

[Linux][Trac] 同じことでハマった…。

Twitter bookmark Facebook LINE Pocket Feedly RSS

同じことにハマった人はいないはずだが。
同じことにハマった人はいないはずだが。

同じことで見事にハマりました。

trac-0.9.x から trac-0.10.3 になってるサーバがあったんです。

とあるプロジェクトだけenumテーブル内のstatusの値を日本語表記に書き換えた箇所がありました。

で、そんなことすっかり忘れていてそのとあるプロジェクトのチケットの新規登録を行おうとすると、


「 "new" is not a valid value for status field 」

というエラーと共にチケットの新規登録ができなくなっていました。

原因は以下のサイトが参考になりました。



sqliteでDB変更して、enumテーブル内のstatusの値を元に戻し、事なきを得たという感じです。
余計なことするんじゃない、ということですかねー。(^^;

同じことにハマった人はいないはずだが。
http://slashdot.jp/~yosuke/journal/382429


【現象】
・trac-0.9.6-ja-2からtrac-0.10-ja-2にバージョンアップ。
 ↓
・あるプロジェクトでチケットの新規登録ができなくなる。
("new" is not a valid value for status field というエラーが出る)

【原因】
・0.9.6のときに、あるプロジェクトでWebAdminからstatusの中身が根本的に変更されていた。
・0.10では、spam対策のためfieldの値が調べられている(#3679)。
・tracの新規登録のsubmit時にハード・コーディングされているstatus="new"という値はDBにないためエラーとなる。

【修正】
・0.10に上げたあとは、trac-adminでstatusを変更できない!
 ↓
・sqliteでDB直叩き。enumテーブル内のstatusに関する行をdelete。もとの値をinsert。

【感想】
・アプリケーションのモデルの根幹に関わるデータは変更できるからって変更するな。
・プラグインはプラグインでしかない。
・tracもstatus fieldの値をidで取ってきて値を埋め込んでおけばいいんじゃない?
・自分でパッチ書けって言うな。

Twitter bookmark Facebook LINE Pocket Feedly RSS