Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
First of all, many, many thanks for supporting SQLite! This is a feature I have been waiting many years for :-))
Please don't take my issue reports as a criticism. I've been using SQLite for some years meanwhile and just want to help.
Steps to reproduce this issue
May I suggest using a busy timeout of e.g. 30 seconds for SQLite database connections.
When the database is in locked, i.e. in use by another application, nothing happens when trying to INSERT or UPDATE any data. HeidiSQL should receive an error message "sqlite_busy" from SQLite, but seems to suppress it (?). So the user currently doesn't have any feedback about his operation has succeeded or not.
When setting a busy timeout, SQLite waits the specified amount of time for the database to become available again (i.e. for the other application to release its file lock), and then retries the INSERT or UPDATE operation. If the lock ain't released for the given timeout period, an "sqlite_busy" error is returned. It should be added to the log for the user being able to notice the error.
Either use the sqlite3_busy_timeout API function or "PRAGMA busy_timeout=30000" when establishing the database connection.
Check for the return code of API functions and provide the user with the error that has occured.
See also: https://www.sqlite.org/errlog.html
Thanks for the details. Should be easy to set that busy-timeout when the connection starts.