SQLite - 使真正的只读数据库

时间:2012-10-28 17:50:40

标签: sqlite

我想打开并读取一个只读的SQLite .db文件。我保证在此期间没有其他人会接触它(也许除了只读)。

我从SQLite3得到的回报是,它永远不会向磁盘写入任何内容(特别是 - 没有描述here),也不会对文件使用任何文件系统锁。

要问太多了吗?

3 个答案:

答案 0 :(得分:3)

如果您在某些Unix下运行,可以使用unix-none VFS禁用所有锁定。

在Windows中,SQLite始终使用锁。 如果您确实想要避免锁定,可以编写自己的VFS,或使用xSetSystemCall覆盖锁定系统调用。

如果SQLite需要临时文件,则无法阻止它创建临时文件。 但是,您可以将其配置为create them in memory instead of on disk

答案 1 :(得分:0)

可以使用只读用户吗?我不知道SQL Lite中是否存在这样的角色。

答案 2 :(得分:0)

VFS没有可以注入的Lock方法。因此,没有直接的方法来注入虚拟LockFile和LockFileEx方法。

这些方法在sqlite3_io_methods(winIoMethod)中引用,并且在不改变SQLite源代码的情况下似乎不容易在运行时修改。

那么,如果我理解正确,VFS不是正确的方向?或者是吗?