代码之家  ›  专栏  ›  技术社区  ›  Tobias Langner

锁定的s3db日志

  •  0
  • Tobias Langner  · 技术社区  · 16 年前

    托比亚斯


    2 回复  |  直到 16 年前
        1
  •  0
  •   Community Mohan Dere    6 年前

    从“ Appropriate uses for SQLite “页面:

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

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

    这很可能是您使用的网络文件系统中的一个错误。无论哪种方式,SQLite开发人员都明确建议不要在网络文件系统上使用数据库。

        2
  •  0
  •   Tobias Langner    16 年前

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

    最后,我们学到了两件事:当你没有启动事务时,永远不要回滚;其次,zeos有一个InTransaction函数可以做到这一点。

    推荐文章