我正在锁定数据库"读取错误,因为我正在执行长事务。由于Cache_Spill是这种独占锁的原因,我想避免对数据库进行独占锁定。所以我需要设置cache_spill = false。
但是下面的代码似乎没有用。
iretval = sqlite3_exec(pSqlHandle,
"PRAGMA cache_spill=false",ZERO,ZERO,ZERO);
if(iretval != SQLITE_OK)
{
iretval = DB_QUERY_FAILED;
goto db_close;
}
我没有收到任何错误。但是我在阅读时仍然把锁定在同一个位置。
修改
只是为了检查,我故意错误输入PRAGMA cahe_spill=false
而我没有收到任何错误。所以第一个问题是,我是否正确执行了编译指示?
修改 我在打开数据库后执行它。
答案 0 :(得分:0)
忽略未知的PRAGMA。 (PRAGMA cache_spill是在SQLite 3.8.0中引入的。)
当SQLite的页面缓存内存不足时,无法阻止写入磁盘; PRAGMA cache_spill仅阻止在此之前写入。 您还必须增加page cache size。