Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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
Database 如何使用并发sqlite 3访问刷新数据_Database_Sqlite - Fatal编程技术网

Database 如何使用并发sqlite 3访问刷新数据

Database 如何使用并发sqlite 3访问刷新数据,database,sqlite,Database,Sqlite,我有两个sqlite windows客户端同时在网络上使用sqlite 3。当追加数据时,记录被成功追加(此时没有日志文件)。但另一个客户机即使在触发一个新的SELECT查询并在从另一个表执行一些SELECT查询后开始查看该表的该记录时,也看不到该记录 所以问题是:是否有“官方”方法完全重置sqlite的内部缓冲区以刷新整个数据?断开与DB的连接是最好的选择,但也许有一种方法可以在不完全断开连接的情况下做到这一点?在网络共享上使用SQLite是一种危险的做法,因为UNIX和Windows机器上的

我有两个sqlite windows客户端同时在网络上使用sqlite 3。当追加数据时,记录被成功追加(此时没有日志文件)。但另一个客户机即使在触发一个新的SELECT查询并在从另一个表执行一些SELECT查询后开始查看该表的该记录时,也看不到该记录


所以问题是:是否有“官方”方法完全重置sqlite的内部缓冲区以刷新整个数据?断开与DB的连接是最好的选择,但也许有一种方法可以在不完全断开连接的情况下做到这一点?

在网络共享上使用SQLite是一种危险的做法,因为UNIX和Windows机器上的网络文件共享软件都存在错误(有时会导致SQLite锁定机制失败)

如果您的数据库以这种方式损坏,请不要感到惊讶

因此,不管您当前的问题是什么,我建议您更改软件,以防止使用SQLite的网络共享


如果您仍然想使用网络共享解决方案,我建议您在正在使用的连接字符串中添加Synchronous=Full pragma(或其等效项),以便使SQLite同步地将所有内容刷新到磁盘。

为了澄清,“SQLite 3基于网络”是指“网络文件系统上的SQLite 3数据库文件”还是“以sqlite3作为后端的客户机-服务器数据库的实现”?第一个(“网络文件系统上的sqlite3数据库文件”)@Maksee您找到了问题的解决方案了吗。