2

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

从 Mac 上通过网络查询可以正常工作。

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

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

谢谢。

4

4 回答 4

5

我不知道它是否可以在 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).
于 2009-09-11T07:47:45.923 回答
2

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

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

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

于 2009-05-29T14:49:01.540 回答
1

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

于 2009-05-25T20:49:31.593 回答
0

我遇到了类似的问题,我通过安装更新​​的 sqlite 版本解决了它。从 Python 2.6 开始,这个问题也消失了,因为它使用了更新的 sqlite dll。

于 2009-05-25T21:25:33.033 回答