I have a SQLite database that is being used by several applications. I had always thought SQLite allowed multiple simultaneous reads, but only one app can write to it at a given time. Is this incorrect?
The layout is that I have a Java Application that is writing the DB on a continuous basis (1 transaction per second with multiple inserts in that transaction). It's a historical database so it is always storing data.
I have another application that is C# (not written by me) that reads data from this database when the user requests a report (basically a data dump). When I run this report, the Java Application will get a SQLite Exception SQLITE_BUSY "Database file is locked" exception and fail to insert data for that few seconds.
My question is, is this normal? Or should the read be able to occur while the inserts are still happening? If this is normal, I will have to add functionality to retry INSERTING if a failure occurs. Or is something in the C# code that I didn't write may be unnecessarily locking the DB for a read?