是否可以在sqlite3中将READ_ONLY数据库切换到WAL日记模式

时间:2018-04-16 16:16:54

标签: c++ sqlite

我在READ_ONLY模式下打开了一个数据库连接。是否可以在运行时将数据库连接切换到日志模式= WAL?

我使用下面的代码切换到WAL模式

sqlite3* ppDb;
int res = sqlite3_open_v2("test.db",&ppDb,SQLITE_OPEN_READONLY,NULL,NULL, 0, NULL);
if(SQLITE_OK==res)
{
    rc = sqlite3_exec(m_dbHandle, "PRAGMA zipvfs_journal_mode=wal;", NULL,NULL, NULL))
}

我在sqlite3_exec语句后收到磁盘I / O错误。

任何人都可以帮助我。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

documentation说:

  

无法打开只读WAL数据库。开放流程必须具有#34; -shm" wal-index与数据库关联的共享内存文件(如果该文件存在),或者对包含数据库文件的目录进行写访问,如果" -shm"文件不存在。

如果在WAL模式下重新打开数据库,则需要相同的写权限。