我想打开并读取一个只读的 SQLite .db 文件。我保证在此期间没有其他人会碰它(也许,除了只读)。
作为回报,我从 SQLite3 需要的是它永远不会向磁盘写入任何内容(特别是 -这里没有描述),并且不对文件使用任何文件系统锁。
那是过分的要求?
如果您在某些 Unix 下运行,您可以使用unix-none
VFS禁用所有锁定。
在 Windows 中,SQLite 总是使用锁。如果您真的想避免锁定,您可以编写自己的 VFS,或者使用xSetSystemCall
.
如果 SQLite 需要一个临时文件,你不能阻止它创建一个。但是,您可以将其配置为在内存中而不是在磁盘上创建它们。
VFS 没有可以注入的 Lock 方法。因此,没有直接的方法来注入虚拟 LockFile 和 LockFileEx 方法。
这些方法在 sqlite3_io_methods (winIoMethod) 中被引用,并且在不更改 SQLite 源代码的情况下似乎不容易在运行时修改。
那么,如果我理解正确的话,VFS 不是正确的方向吗?或者是吗?
May be use a read-only user? I don't know if such role exists in SQL Lite.