> According to documents, sqlite_busy will happen if new reader cannot get > shared_lock or new writer cannot get reserved_lock. > I didn't see sqlite_busy error from my application.
I didn't understand this. "database is locked" is SQLITE_BUSY. > Does this mean I need to close the current database connection before I can > make the next connection to same database file even through they are not > shared? No, you can have several connections in one thread if you want. > Though it is not shared, it seems there may be cases where more > than 1 database connections are held (in nested function calls). Will this > cause any issue? This can definitely be the issue. Consider this scenario: - open connection 1; - start executing some query on connection 1 - call sqlite3_step() but it didn't return SQLITE_DONE yet; - open connection 2; - execute some update/insert/delete on connection 2 In this case you have active statement on connection 1 that holds SHARED lock on the database. And it will prevent any other connections from writing. So connection 2 cannot obtain EXCLUSIVE lock, you get SQLITE_BUSY without any chances to succeed. Pavel On Wed, Mar 17, 2010 at 1:35 PM, imin imup <imini...@gmail.com> wrote: > Thanks for help. As a novel sqlite user, it seems I need more. > > According to documents, sqlite_busy will happen if new reader cannot get > shared_lock or new writer cannot get reserved_lock. > I didn't see sqlite_busy error from my application. > > My usage is that: > single process, multi-thread, multi-database files > > multi-database files > I divided the tables into 2 database files to "increase" concurrency. A > thread may open two database file at same time, but two database never > appear in one sql statement. Is this likely to cause any issue? > > about "one connection per thread" > Does this mean I need to close the current database connection before I can > make the next connection to same database file even through they are not > shared? > I tend to use short-lived database connections locally defined within each > function. Though it is not shared, it seems there may be cases where more > than 1 database connections are held (in nested function calls). Will this > cause any issue? > > On Wed, Mar 17, 2010 at 11:05 AM, Pavel Ivanov <paiva...@gmail.com> wrote: > >> http://www.sqlite.org/faq.html#q5 >> http://www.sqlite.org/lockingv3.html >> >> Pavel >> >> On Wed, Mar 17, 2010 at 11:46 AM, imin imup <imini...@gmail.com> wrote: >> > Hello users, >> > >> > I'm using sqlite 3.6.12 in muti-threaded application. I'm getting sqlite >> > errors occasionally. >> > The error message is >> > >> > *sqlite error: database is locked* >> > >> > could someone explain to me what happened and what to be done? or point >> me >> > to a document on how to fix this? >> > >> > Best >> > >> > Imin >> > _______________________________________________ >> > 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 >> > _______________________________________________ > 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