SQLite总是回复“数据库表被锁定”

时间:2014-12-16 19:27:00

标签: c++ c sqlite

如果我在我的C ++程序中执行这些语句(%s代表一个可能不同的select语句,请假设%s中没有错误。)

BEGIN TRANSACTION;
CREATE TEMP TABLE tmp AS %s;
DROP TABLE tmp;
COMMIT;

然后sqlite3总是回复database table is locked,除非我不在最后删除表。语句使用sqlite3_exec()执行。还有其他问题在线,但没有答案,例如:

http://sqlite.1065341.n5.nabble.com/How-is-the-table-getting-locked-and-how-to-unlock-it-td58324.html

我怀疑PRAGMA journal_mode=WAL;PRAGMA synchronous=OFF;应该受到指责,但我不确定。另外,也许逐个执行和完成语句也可能有用吗?我可以检查表当前是否已锁定?

1 个答案:

答案 0 :(得分:2)

您正在使用sqlite3_enable_shared_cache()SQLITE_OPEN_SHAREDCACHE。                      - CL