Lauren LaGarde wrote:
Hi all,
I need a little help. I've been getting the "Database is locked"
error quite a bit, and so I've decided to upgrade SQLite and PySqlite
to try and reduce the frequency of the errors.
I'm running Trac .10dev, but I don't know what revision, or how to
find out what revision. :)
I'm also currently running the following: SQLite v. 3.2.1, python v.
2.4.2, PySqlite v. 2.0.3, and mod_python v. 3.1.3 on Ubuntu Linux 5.10.
So according to what I've read so far, Trac works best with SQLite
3.2.8 or better, and also works well with PySqlite 2.1.3. The latest
stable version of SQLite is 3.3.4, which requires PySqlite 2.1.3.
And according to some of the tickets regarding the "database is
locked" error, they recommend compiling SQLite using the
--enable-threadsafe option for multithreaded/mod_python environments.
Correct.
However, according to ticket #2196, Trac doesn't work with threadsafe
SQLite on Linux. A patch was issued with that ticket, but it modifies
the db.py file, a file that exists in Trac 0.9.4, but not in 0.10dev.
The fix is still there in 0.10dev, don't worry!
So being a newbie, I decided to just go for the regular
non-thread-safe SQLite and PySqlite upgrades, and see if it worked.
So I downloaded and installed SQLite 3.3.4, then installed PySqlite
2.1.3. Trac gave back a 500 error. Since it's a database upgrade, I
figured I should probably run trac-admin upgrade, which responded that
the database file was encrypted or not a database file... or something
like that.... I don't remember the exact error, but it was the same
error you get when you've upgraded from SQLite 2.x to 3.x but haven't
done the file dump. But I was moving from 3.x to 3.x, so it shouldn't
have been a problem. And using SQLite on the same database file on
the command line works fine. Also, after installing SQLite 3.3.4,
Trac continues to work, but after installing PySqlite, it's broken,
so I'm assuming it's PySqlite that's the issue. So what am I missing
or what am I doing wrong? Do I have to install PySqlite first, then
SQLite? Do I have to install SQLite, then PySqlite, then rebuild and
reinstall Trac completely? Is there some other trac-admin command I
should be using? Is there a configuration value I have to
change? Any help would be appreciated.
You should first install SQLite 3.3.4, then build PySqlite 2.1.3.
For that, you should edit the setup.cfg file in the distribution of
pysqlite to point to the include and lib directory of sqlite and then
"python setup.py install" should work.
Then, you should verify that you're really using this pysqlite and not
an older one (I suspect that your DB error was due to the fact that
an older pysqlite binding was used, one that was certainly linked to
some 2.x libsqlite instead of the 3.x libsqlite3).
-- Christian
_______________________________________________
Trac mailing list
[email protected]
http://lists.edgewall.com/mailman/listinfo/trac