【问题标题】:"Database is locked" error in SQLite over a Mac networkMac 网络上的 SQLite 中的“数据库已锁定”错误
【发布时间】:2010-10-28 19:46:12
【问题描述】:

我使用 SQLite(实际上是 PySQLite)创建了一个简单的数据库。当我从本地机器(即windows机器驱动器上的程序和数据库文件)查询或写入数据库时​​,它工作正常。但是,当我将数据库文件复制到我的网络驱动器(时间胶囊)时,Windows 机器虽然可以看到这些文件并且对驱动器具有完全的读/写访问权限,但甚至给我一个“SQL 错误:数据库已锁定”执行简单选择时!

Mac 上的网络查询工作正常。

没有花哨的多访问——只有一台机器打开了数据库。似乎是一些奇怪的 Mac 网络问题。在 Python 程序或 SQLite3 命令行中发生。我正在使用 SQLite 3.6.14.2。

有人看到这个问题吗?有什么办法解决吗?真的不想使用 MYSQL,因为这是一个简单的单用户程序,但我想在多台机器上使用它。

谢谢。

【问题讨论】:

    标签: sqlite file-locking


    【解决方案1】:

    不知道在MAC上是否可以,在Debian上我必须用nobrl选项挂载samba目录。

    来自 mount.cifs(8):

      nobrl
          Do not send byte range lock requests to the server. This is
          necessary for certain applications that break with cifs
          style mandatory byte range locks (and most cifs servers do
          not yet support requesting advisory byte range locks).
    

    【讨论】:

      【解决方案2】:

      阅读 sqlite 常见问题解答:http://www.sqlite.org/faq.html#q5

      “经验丰富的人 用 Windows 告诉我文件锁定 的网络文件是非常错误的,并且是 不可靠。如果他们说的是 是的,共享一个 SQLite 数据库 在两台或多台 Windows 机器之间 可能会导致意想不到的问题。”

      所以它在 Windows 上不起作用,它不会告诉 MAC。

      【讨论】:

        【解决方案3】:

        I've had a similar problem 我通过安装更新​​的 sqlite 版本解决了这个问题。从 Python 2.6 开始,这个问题也消失了,因为它使用了更新的 sqlite dll。

        【讨论】:

        • 希望如此。可悲的是,我正在运行最新版本的 SQLite。基本上,当 Windows 客户端在基于 mac 的网络(在我的情况下为 Time Capsule)上查询文件时,SQLite 似乎不起作用。将使用其他排列,例如在 Windows 或其他基于 *Nix 的机器上运行数据库。
        【解决方案4】:

        可能它无法通过网络锁定文件,我认为您使用 SMB 协议,因此该软件包带有错误。如果您想通过网络使用 SQLite,请参阅SQLite Network 了解替代方案。

        【讨论】:

          猜你喜欢
          • 2020-01-07
          • 2022-01-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-09
          • 2018-06-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多