Trac0.10の環境で、最新版のPostgreSQL8.3に移行してみたらTracが動かなくなった・・・。
出てくるエラーはこんな感じ。
Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 406, in dispatch_request dispatcher.dispatch(req) File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 237, in dispatch resp = chosen_handler.process_request(req) File "/usr/lib/python2.4/site-packages/trac/ticket/web_ui.py", line 313, in process_request get_reporter_id(req, 'author')) File "/usr/lib/python2.4/site-packages/trac/ticket/web_ui.py", line 630, in _insert_ticket_data for change in self.grouped_changelog_entries(ticket, db): File "/usr/lib/python2.4/site-packages/trac/ticket/web_ui.py", line 677, in grouped_changelog_entries changelog = ticket.get_changelog(when=when, db=db) File "/usr/lib/python2.4/site-packages/trac/ticket/model.py", line 296, in get_changelog "ORDER BY time", (self.id, str(self.id), self.id)) File "/usr/lib/python2.4/site-packages/trac/db/util.py", line 50, in execute return self.cursor.execute(sql_escape_percent(sql), args) File "/usr/lib/python2.4/site-packages/trac/db/util.py", line 50, in execute return self.cursor.execute(sql_escape_percent(sql), args) File "/usr/lib/python2.4/site-packages/pyPgSQL/PgSQL.py", line 3111, in execute raise OperationalError, msg OperationalError: ERROR: operator does not exist: text = integer at character 241 HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
どうやら調べてみると、PostgreSQL8.3からテキスト型への自動キャストがなくなったようだ。
参考: PostgreSQL 8.3 に関する技術情報 @ SRA
確かにPostgreSQLのログを見てみるとTracから実行されているSQLで、テキスト型のカラムに対して数値を指定して実行しようとしてました。(シングルコーテーションで括っていない)
また、Tracの公式ページ にも書かれていますが、PostgreSQL8.3を使いたい場合は、Trac0.11以上のバージョンでないとダメみたいですね。
Warning: PostgreSQL 8.3 uses a strict type checking mechanism. To use Trac with the 8.3 Version of PostgreSQL, you will need trac-0.11 or later.
次は、Trac0.10からTrac0.11へのバージョンアップネタかな・・・。
関連記事
バグトラッキングシステム「Trac」インストール
Tracの使い方 - trac-adminの使い方、チケットの管理とロードマップの確認 -
Tracの使い方 - Trac上で管理されている権限一覧 -