> I am not using BEGIN IMMEDIATE, just BEGIN, but I don't think it is a > problem in my case, since now there really is just one program accessing > the database.
Did you forget the message this thread was started from? The sqlite3 command line utility is a second program, so this could be a problem. Pavel On Wed, Jun 16, 2010 at 9:33 AM, Odekirk, Shawn <shawn.odek...@intelligrated.com> wrote: > Thank you all for your responses. This discussion has grown a lot more > than I thought it would. > Like I said in my original question, my system is made up of several > programs that communicate by sending messages to each other. I have a > utility program that can send messages to the programs for testing and > debugging purposes. I have updated my utility program and the program > that accesses the database so that I can send arbitrary SQL queries or > update statements to the database program to execute. Now I don't need > to use the command line SQLite tool and the locked database problem is > no longer an issue. > The discussion of transactions and interleaving queries with updates was > really good information. > I am (mis)using transactions not so much to group a unit of work that > must succeed together, but more to improve the I/O performance by > causing any updates to be written to disk at the end of the transaction. > Writing each change individually to disk was taking too much time and > wrapping things in a transaction reduced that time considerably. > I am not using BEGIN IMMEDIATE, just BEGIN, but I don't think it is a > problem in my case, since now there really is just one program accessing > the database. > I am probably interleaving queries and updates in at least one part of > my program, but it doesn't seem to be causing any problems. I'll let you > know if I get the 1:00 am hotline support call. > Swapnil, thanks for the link. I'm running on SCO OpenServer so I'm not > sure your product would work for me but I'll take a look. I was really > looking for code examples that demonstrate best practices. > > Thanks again for all the comments, suggestions and good information. > > Shawn > > >> Hi Shawn, >> >> > demonstrate SQLite best >> > practices, including how to correctly handle error conditions, such > as >> > the database is locked condition? >> > If you pre-select and then modify, you have to be aware enough to >> > realize you MUST wrap the whole process in a manual transaction, >> > and you still need to know how to deal with all the locking and >> > busy issues that come with that. >> >> One way to assure use of best-practices in dealing with SQLite >> nitty-gritties of transactions, locking and busy errors would be to >> use a tool like StepSqlite PL/SQL compiler >> >> (https://www.metatranz.com/stepsqlite > <https://www.metatranz.com/stepsqlite> ). >> >> It automates SQLite best-practices (as recommended by Jay, Pavel and >> Simon in this thread) by wrapping things in transactions, handling >> BUSY errors and retrying after delay and others like preparing all SQL >> statements only once etc. >> SQLite combined with a 4GL like StepSqlite PL/SQL lets you focus on >> writing your code instead of having to learn to deal with SQLite >> idiosyncrasies right at the beginning. >> >> Full disclosure: I am the creator of StepSqlite. >> >> -Swapnil Kashikar >> support @ metatranz . com > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users