我已经使用SQLite(实际上是PySQLite)创建了一个简单的数据库。当我从本地机器(即Windows机器驱动器上的程序和数据库文件)查询或写入数据库时,它工作得很好。然而,当我将数据库文件复制到我的网络驱动器(时间胶囊)时,那么Windows计算机,尽管它们可以看到文件并对驱动器拥有完全的读/写访问权限,但即使在执行简单的SELECT时,也会给我一个“SQL错误:数据库已锁定”!
Mac上的查询在网络上运行得很好。
没有花哨的多路访问--只有一台机器打开了数据库。看起来像是一些奇怪的Mac网络问题。在Python程序中或在SQLite3命令行中发生。我正在使用SQLite 3.6.14.2。
有人见过这个问题吗?有什么办法修好它吗?我真的不想对MySQL过重,因为这是一个简单的单用户程序,但我想在多台机器上使用它。
谢谢。
5条答案
按热度按时间vojdkbi01#
我不知道这是否可以在Mac上完成,在Debian上,我必须使用nobrl选项挂载samba目录。
从mount t.cif(8):
relj7zay2#
阅读SQLite常见问题解答:http://www.sqlite.org/faq.html#q5
“对Windows有很多经验的人告诉我,网络文件的文件锁定问题很大,而且不可靠。如果他们说的是真的,在两台或更多Windows计算机之间共享一个SQLite数据库可能会导致意想不到的问题。”
所以它在Windows上不起作用,它不会告诉你关于Mac的信息。
qij5mzcb3#
可能它无法通过网络锁定文件,我认为您使用的是SMB协议,所以错误随包而来。如果您想通过网络使用SQLite,请参见SQLite Network以获得替代方案。
ryevplcw4#
我也遇到过类似的问题,我通过安装较新的SQLite版本解决了这个问题。从Python2.6开始,这个问题也消失了,因为它使用了更新的SQLite DLL。
js81xvg65#
谢谢你卡洛斯。Cherrytree依赖于SQLite,由于某种原因,它最近停止使用我装载的samba安装的SQLite数据库文件,并抱怨数据库被锁定。在我的ubuntu fstab条目中添加“nobrl”解决了这个问题。
//192.168.3.122/Files/mnt/Files cif用户名=PUBLIC,PASSWORD=asdf,rw,nperm,nobrl 0 0