I've been tearing my hair out over this for a little while, but I feel like there must be something simple I'm missing. Based on the behavior I'm seeing, the EXCLUSIVE locking mode isn't working the way I'd expect it to work based on the docs at http://www.sqlite.org/pragma.html#pragma_locking_mode.
Specifically, that page says that locking_mode = EXCLUSIVE is useful if "The application wants to prevent other processes from accessing the database file." However, if I start up a SQLite shell, set the locking_mode to exclusive, and perform an insert or other write operation (such that the exclusive lock should be acquired and not released), I can still read the file from other processes (e.g. I can copy it using a file manager UI). I cannot open it in another instance of SQLite (as expected) but from the documentation I'd expect not to be able to read it from another process at all until the lock had been released somehow or the database closed. I originally thought it was an OS issue but the behavior is the same on Windows Vista w/ SQLite 3.7.7.1 and Mac OS X 10.6 w/ SQLite 3.6.12. This behavior seems undesirable to me -- we've got users of our application copying the database file using Windows Explorer while it's being written to, and ending up with inconsistent/corrupt databases. Am I missing something here or if I want to prevent this, is my only option to modify our build of SQLite to open the file for exclusive access? Jonathan LittleInformation (including any attachments) contained in this electronic transmission is a PRIVILEGED AND CONFIDENTIAL COMMUNICATION. It is for the sole use of the sender and the entity named above. If you received this electronic transmission in error, you are required to immediately delete it in its entirety without making a copy. Further dissemination is absolutely prohibited. Thank you. _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users