我应该怎么做,以并发的sqlite 3访问刷新数据

问题描述:

我有两个sqlite的Windows客户端并发使用网络上的sqlite 3基地。当追加数据时,记录成功追加(目前没有日志文件)。但是,即使新的SELECT查询被触发,另一个客户端也不会看到此记录,并且在来自另一个表的某些SELECT查询之后开始查看此表的此记录。我应该怎么做,以并发的sqlite 3访问刷新数据

所以问题是:是否有“官方”的方式来重置sqlite的内部缓冲区完全刷新整个数据?断开数据库将是一个最好的选择,但也许有一种方法可以在没有完全断开连接的情况下执行此操作?

+0

为了说明,“网络上的sqlite 3基础”是指“网络文件系统上的sqlite3数据库文件”还是“客户端 - 服务器数据库的一个实施,其中sqlite3作为后端”? – 2009-08-30 10:04:33

+0

第一个(“网络文件系统上的sqlite3数据库文件”) – Maksee 2009-08-31 10:03:02

由于UNIX和Windows计算机上的网络文件共享软件的错误实现(导致SQLite锁定机制有时会失败),通过网络共享使用SQLite是一种危险的做法。

如果数据库以这种方式被破坏,请不要感到惊讶。

所以 - 不管你目前的问题,我建议你改变你的软件,以防止与SQLite使用网络共享。

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