如果我在我的C ++程序中执行这些语句(%s
代表一个可能不同的select语句,请假设%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;
应该受到指责,但我不确定。另外,也许逐个执行和完成语句也可能有用吗?我可以检查表当前是否已锁定?
答案 0 :(得分:2)
您正在使用sqlite3_enable_shared_cache()
或SQLITE_OPEN_SHAREDCACHE
。
- CL