Also it suggests that transaction was began as read-only (with a
select statement) and then there was attempt to transform it to a
writing transaction (with insert, update or delete statement) when
there  was another writing transaction in progress waiting for this
transaction to finish.

and that's nicely (and transparently) dealt with by using explicit BEGIN IMMEDIATE transaction (plus proper COMMIT) along with a timeout longer than the longest possible sequence of possible transactions.

I always use something like 20 minutes to allow for backup taking place.

Think of this timeout as "large bounded near-infinite time". Whatever time the transaction causing BUSY will take (and other transactions created before yours can engage), it will finally find its way unless you have write transaction(s) repeating so quickly that yours doesn't have any chance to ever run.

JcD
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to