SQLite:Pragma cache_spill = false无法正常工作

时间:2015-04-09 13:03:30

标签: sqlite pragma

我正在锁定数据库"读取错误,因为我正在执行长事务。由于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而我没有收到任何错误。所以第一个问题是,我是否正确执行了编译指示?

修改 我在打开数据库后执行它。

1 个答案:

答案 0 :(得分:0)

忽略未知的PRAGMA。 (PRAGMA cache_spill是在SQLite 3.8.0中引入的。)

当SQLite的页面缓存内存不足时,无法阻止写入磁盘; PRAGMA cache_spill仅阻止在此之前写入。 您还必须增加page cache size