I'm currently using the latest available 3.30.1 SQLite.dll to connect to an SQLite database from a multi-threaded 32 bit app via the latest Zeos 7.3 (git) commit. Each thread has it's own connection and one table is explicitly used by one thread at a time. All seems to be fine until I change a filter and then I call .Refresh - at this point an exception is thrown in TZAbstractSQLiteCAPIPreparedStatement.ExecuteQueryPrepared (which is called by InternalRefresh). BusyTimeout does not seem to help and I already serialized all write operations - but a refresh is not a write operation...?
It seems FPlainDriver.sqlite3_step(FStmtHandle); returns with error code 5.
Anyone met this issue before? Any suggestions on how to solve it?
Thanks!
Database is locked error upon calling TZQuery.Refresh
Moderators: gto, cipto_kh, EgonHugeist
Database is locked error upon calling TZQuery.Refresh
Delphi 12.2, Zeos 8 from latest GIT snapshot
Using:
- MySQL server 8.0.18; libmysql.dll 8.0.40 x64 5.7.19 x68, libmariadb.dll 3.3.11
- Oracle server 11.2.0, 12.1.0, 19.0.0; oci.dll 21.15
- MSSQL 2012, 2019; sybdb.dll FreeTDS_3102
- SQLite 3.47
Using:
- MySQL server 8.0.18; libmysql.dll 8.0.40 x64 5.7.19 x68, libmariadb.dll 3.3.11
- Oracle server 11.2.0, 12.1.0, 19.0.0; oci.dll 21.15
- MSSQL 2012, 2019; sybdb.dll FreeTDS_3102
- SQLite 3.47