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 锁定的s3db日志_Sqlite_Networking - Fatal编程技术网

Sqlite 锁定的s3db日志

Sqlite 锁定的s3db日志,sqlite,networking,Sqlite,Networking,几天之后,我们在sqlite上出现了一个奇怪的错误。我们在网络共享上使用一个sqlite数据库,有多台计算机访问它。我们的客户报告说数据库不见了。快速浏览显示,数据库仍然存在,但没有计算机可以访问它。它还显示了一个s3db日志文件,表明发生什么事情时有人正在/正在访问数据库。奇怪的是,s3db日志文件被文件系统锁定(我们无法复制/删除它)。重新启动所有应用程序后,锁定的文件将按原样消失 这是怎么发生的?我们想以某种方式扣除我们的客户是如何陷入这种情况的。我们知道,有一个损坏的网络连接到其中一台计

几天之后,我们在sqlite上出现了一个奇怪的错误。我们在网络共享上使用一个sqlite数据库,有多台计算机访问它。我们的客户报告说数据库不见了。快速浏览显示,数据库仍然存在,但没有计算机可以访问它。它还显示了一个s3db日志文件,表明发生什么事情时有人正在/正在访问数据库。奇怪的是,s3db日志文件被文件系统锁定(我们无法复制/删除它)。重新启动所有应用程序后,锁定的文件将按原样消失

这是怎么发生的?我们想以某种方式扣除我们的客户是如何陷入这种情况的。我们知道,有一个损坏的网络连接到其中一台计算机

谢谢你的帮助

托拜厄斯


要澄清这一点,请从“”页中选择几台=最多10台计算机

如果有许多客户端程序通过网络访问公共数据库,则应该考虑使用客户机/服务器数据库引擎而不是SQLite。SQLite将在网络文件系统上工作,但由于与大多数网络文件系统相关的延迟,性能将不会很好。此外,许多网络文件系统实现的文件锁定逻辑包含bug(在Unix和Windows上)。如果文件锁定无法正常工作,则两个或多个客户端程序可能会同时修改同一数据库的同一部分,从而导致数据库损坏。因为这个问题是由底层文件系统实现中的bug引起的,所以SQLite无法阻止它

一个好的经验法则是,在通过网络文件系统从多台计算机同时访问同一数据库的情况下,应该避免使用SQLite


这很可能是您正在使用的网络文件系统中的一个bug。无论如何,SQLite开发人员明确建议不要在网络文件系统上使用数据库。

问题已经解决。数据库组件(zeos)抛出了一个异常,我们尝试了回滚。由于组件的设计方式,只有在启动事务时才允许这样做。如果没有,您将获得锁定的s3db日志文件


最后,我们学到了两件事:当您没有启动事务时,永远不要回滚,第二,zeos有一个函数可以实现这一点。

我知道,我们正在努力。同时,sqlite似乎比ms access更好(至少sqlite支持事务)。