如果我在我的 C++ 程序中执行这些语句(%s
代表一个选择语句,它可能会有所不同,请假设 %s
中没有错误)。
BEGIN TRANSACTION;
CREATE TEMP TABLE tmp AS %s;
DROP TABLE tmp;
COMMIT;
然后 sqlite3 总是回复 database table is locked
,除非我最后没有删除表。这些语句使用 sqlite3_exec()
执行。网上还有其他类似的问题,但没有答案,例如:
我怀疑 PRAGMA journal_mode=WAL;PRAGMA synchronous=OFF;
是罪魁祸首,但我不确定。另外,也许一个一个地执行和完成语句也可能有效?我可以检查表当前是否已锁定吗?
最佳答案
您正在使用 sqlite3_enable_shared_cache()
或 SQLITE_OPEN_SHAREDCACHE
。
– CL。
关于c++ - SQLite 总是回复 "database table is locked",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27512393/