Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite-实现只读数据库_Sqlite - Fatal编程技术网

SQLite-实现只读数据库

SQLite-实现只读数据库,sqlite,Sqlite,我想打开并读取一个SQLite.db文件,只读。我保证在此期间不会有其他人触摸它(也许,只读除外) 作为回报,我需要从SQLite3中得到的是,它不会向磁盘写入任何内容(特别是——没有描述的内容),并且不会对文件使用任何文件系统锁 这要求太高了吗?可能是只读用户吗?我不知道SQL Lite中是否存在这样的角色。如果您在某些Unix下运行,可以使用禁用所有锁定 在Windows中,SQLite始终使用锁。 如果您确实想要避免锁定,您可以编写自己的VFS,或者使用重写锁定系统调用 如果SQLite需

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

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


这要求太高了吗?

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

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

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

如果SQLite需要临时文件,则无法阻止它创建临时文件。
但是,您可以将其配置为。

VFS没有可以注入的锁定方法。因此,没有直接的方法来注入伪LockFile和LockFileEx方法

这些方法在sqlite3_io_方法(winIoMethod)中引用,在运行时不修改SQLite源代码似乎不容易修改


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

注意:关于您自己的虚拟机,您可以使用
sqlite\u vfs.*
API获取现有虚拟机,而不仅仅是使用您自己的锁定功能创建一个新的
vtable
。这应该很简单,我们发现了这种“读取未提交隔离模式”,参见,它应该可以解决这个问题;然而,事实并非如此。SQLite仍然尝试使用锁API。有什么想法吗?