2008-05-06

Trac-0.11から0.10へのダウングレード

たまたまやる機会があったので、まとめておく。
Trac-0.10.4からTrac-0.11rc1までの間にデータベースのバージョンは20から21に変更されている。アップグレードスクリプトを見るとレポートの中身を変えている (acceptedステータスが増えた対応) だけなので、データベース構造は変わっていない。system表のdatabase_versionを21から20に戻して、`trac-admin resync`すればよさげ。
$ cd $TRAC_ENV
$ sqlite3 db/trac.db
sqlite> update system set value='20' where name='database_version';
sqlite> .exit
$ trac-admin . resync
$
レポートは元ソースを見ながら適当に直せば可。0.10.4からアップグレードしたEnvironmetの場合は、以上終わり。
0.11で新規作成したEnvironmentの場合、system表のinitial_database_versionも21から20に落とさなきゃいけないのと、enum表にstatusを入れるのも必要。0.11でTicketWorkflowがプラグイン化されたのを期にステータスの情報がenum表からtrac.iniに移ったので、initenvするときには作られなくなったようだ。
$ sqlite3 db/trac.db
sqlite> update system set value='20' where name='initial_database_version';
sqlite> insert into enum values('status', 'new', '1');
sqlite> insert into enum values('status', 'assigned', '2');
sqlite> insert into enum values('status', 'reopened', '3');
sqlite> insert into enum values('status', 'closed', '4');
sqlite> .exit
$
ものすごくレアなケースの移行だと思うので、たぶん情報価値はないんだろうな。

1 件のコメント:

miya さんのコメント...

> たぶん情報価値はないんだろうな。
いえいえ、価値ありました。

いままでソースで入れてたのですが、SourceForgeに0.10系のRPMがあるのを発見して、ダウングレードするか検討しています。

バージョンを追っかけるのがめんどくさくて。。。