3

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

作为回报,我从 SQLite3 需要的是它永远不会向磁盘写入任何内容(特别是 -这里没有描述),并且不对文件使用任何文件系统锁。

那是过分的要求?

4

3 回答 3

3

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

在 Windows 中,SQLite 总是使用锁。如果您真的想避免锁定,您可以编写自己的 VFS,或者使用xSetSystemCall.

如果 SQLite 需要一个临时文件,你不能阻止它创建一个。但是,您可以将其配置为在内存中而不是在磁盘上创建它们

于 2012-10-28T19:28:28.873 回答
0

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

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

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

于 2012-10-30T12:16:44.260 回答
-1

May be use a read-only user? I don't know if such role exists in SQL Lite.

于 2012-10-28T17:53:11.833 回答