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

Is it possible to connect to an in-memory sqlite db in Read-Only mode?

本文关键字:sqlite 数据库 内存 只读 模式 连接 是否      更新时间:2023-10-16

我知道我可以在sqlite3_open_v2()中使用file:DB_NAME?mode=memory&cache=shared打开多个连接到内存sqlite数据库。

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

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

是否有办法将连接设置为只读?我应该编写自己的VFS来完成它吗?

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

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

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