SQLite is also not too difficult to switch to a more advanced SQL in the future.
Let's say "don't use it for production for a multiuser server app" then I agree. But that isn't really a supported scenario at all.
The cost is that access through network e.g. NFS or SMB in wal mode is impossible (but you shouldn't have done that anyway), and that you can't just ship the sqlite file - ship a dump/backup instead, or you'll have to do recovery on the wal file you sent.
Of course, it's a good idea to use pgsql from the get-go; but SQLite deserves more credit than it gets, and is much more capable than it is usually assumed to be.
There are only 7 billion people, most of whom don't need your database updated faster than their ping time...
seems like a non-issue.
Can't you just idle in a loop waiting for the lock, perhaps waiting a random number of milliseconds (200-800)?
(So that rather than crash, the client just "hangs" waiting for the lock, in a busy loop.)
It just seems like this should not be an issue.
I'm just trying to understand your advice and learn from your experience, I am just confused by this followup.
In theory, SQLite works quite well with concurrent accesses, I have just never tried it because the libraries in the languages I've used didn't work well for that.
Though unless you did a truly comprehensive shootout it might be fairer to write: "Be careful using sqlite in production, the client libraries I tried in Python did not handle concurrent reads/writes, whereas clients for postgresql handle it just fine."
Anyway, thanks for the clarification!
> I hope I have helped you choose PostgreSQL for your next business