2005年10月17日
Linux | trac データベースエラー
今朝出社して、tracサイトにアクセスすると
Trac detected an internal error:とエラーが表示され、どうすることもできなくなっていた。file is encrypted or is not a database
Traceback (most recent call last):
File "/usr/lib/python2.3/site-packages/trac/core.py", line 531, in cgi_start
real_cgi_start()
File "/usr/lib/python2.3/site-packages/trac/core.py", line 513, in real_cgi_start
env = open_environment()
File "/usr/lib/python2.3/site-packages/trac/core.py", line 190, in open_environment
version = env.get_version()
File "/usr/lib/python2.3/site-packages/trac/Environment.py", line 162, in get_version
cursor.execute("SELECT value FROM system WHERE name='database_version'")
File "/var/tmp/python-sqlite-root//usr/lib/python2.3/site-packages/sqlite/main.py", line 244, in execute
DatabaseError: file is encrypted or is not a database
プロジェクトのタスク管理を任せていたので、やばいなと焦りつつGoogleで検索すると、全く同じ症例と解決法を見つけることが出来た。tracのML過去ログでも同じ解決法が挙げられていたので、やってみたら解決。でもレポートのソートが変わってた。
Googleで見つけたサイトはもうキャッシュにしか残ってないのでここに残しておきます。
We've finally tracked the problem to SQLite version 2.x vs 3.xOn Fedora Core 4, Trac uses SQLite 3.x although the trac.db database in conf directory is in version 2.x format. The solution is to manually upgrade all the Trac environment databases to version 3.x:
mv trac.db trac2.db
sqlite trac2.db .dump | sqlite3 trac.db