SQLite-实现只读数据库
我想打开并读取一个SQLite.db文件,只读。我保证在此期间不会有其他人触摸它(也许,只读除外) 作为回报,我需要从SQLite3中得到的是,它不会向磁盘写入任何内容(特别是——没有描述的内容),并且不会对文件使用任何文件系统锁SQLite-实现只读数据库,sqlite,Sqlite,我想打开并读取一个SQLite.db文件,只读。我保证在此期间不会有其他人触摸它(也许,只读除外) 作为回报,我需要从SQLite3中得到的是,它不会向磁盘写入任何内容(特别是——没有描述的内容),并且不会对文件使用任何文件系统锁 这要求太高了吗?可能是只读用户吗?我不知道SQL Lite中是否存在这样的角色。如果您在某些Unix下运行,可以使用禁用所有锁定 在Windows中,SQLite始终使用锁。 如果您确实想要避免锁定,您可以编写自己的VFS,或者使用重写锁定系统调用 如果SQLite需
这要求太高了吗?可能是只读用户吗?我不知道SQL Lite中是否存在这样的角色。如果您在某些Unix下运行,可以使用禁用所有锁定 在Windows中,SQLite始终使用锁。 如果您确实想要避免锁定,您可以编写自己的VFS,或者使用重写锁定系统调用 如果SQLite需要临时文件,则无法阻止它创建临时文件。
但是,您可以将其配置为。VFS没有可以注入的锁定方法。因此,没有直接的方法来注入伪LockFile和LockFileEx方法 这些方法在sqlite3_io_方法(winIoMethod)中引用,在运行时不修改SQLite源代码似乎不容易修改
所以,如果我理解正确,VFS不是正确的方向?或者是吗?注意:关于您自己的虚拟机,您可以使用
sqlite\u vfs.*
API获取现有虚拟机,而不仅仅是使用您自己的锁定功能创建一个新的vtable
。这应该很简单,我们发现了这种“读取未提交隔离模式”,参见,它应该可以解决这个问题;然而,事实并非如此。SQLite仍然尝试使用锁API。有什么想法吗?