The embedded database: typing, transactions, indexes, WAL and its limits.
Your app logs the error "database is locked" (code SQLITE_BUSY) when
it tries to save a record. In plain words, what does this error mean,
and is your data damaged?
A teammate used to PostgreSQL asks: "How many connections can write to a SQLite database at the same moment, and how many can read?" What do you tell them, and what exactly does a write lock cover?
What is the SQLite busy timeout (for example PRAGMA busy_timeout = 5000;)
for, and what happens when it is not set?
Your code runs three INSERT statements one after another without any
BEGIN or COMMIT. When does SQLite take the write lock and when
does it release it? How does that change if you wrap the three in
BEGIN ... COMMIT?
While debugging, you open your app's SQLite file in a GUI database browser, edit a row, and leave the tool open without clicking "Write changes". Now your app gets "database is locked" on every save. Why, and what do you do?
Your small service and a nightly maintenance script, two separate processes, both write to the same SQLite file on the server's local disk. Is that allowed? What does SQLite do when both try to write at the same moment?