是否可以以只读模式连接到内存中的 sqlite 数据库?

Bha*_*ava 5 c c++ database sqlite

我知道我可以使用file:DB_NAME?mode=memory&cache=sharedin打开多个连接到 In-Memory sqlite 数据库sqlite3_open_v2()

我打开了 2 个到内存数据库的连接。一个带有标志SQLITE_OPEN_URI | SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE,另一个带有SQLITE_OPEN_READONLY | SQLITE_OPEN_URI

问题是即使连接是只读的,sqlite 也允许我修改数据库。

有没有办法使连接只读?我应该编写自己的 VFS 来完成它吗?

CL.*_*CL. 5

SQLITE_OPEN_READONLY标志影响数据库访问任何文件和处理事务的方式。

共享缓存模式下,多个连接在文件系统的接口中显示为单个连接。因此,它们共享文件访问/事务设置。

要防止连接启动任何写入事务,请使用PRAGMA query_only