在sqlite tcl中阻止数据库锁定

时间:2014-03-25 18:15:39

标签: database sqlite tcl locks

我有一个TCL应用程序,其中多个子进程从单个数据库连接读取和写入到sqlite数据库,并且子进程的sone可能比其他进程花费的时间更长,我遇到TCL抛出的“数据库锁定”错误。

我知道我可以使用TCL API为sqlite提供繁忙的回调方法 - 但即使数据库被锁定,它似乎也没有被调用。我只是希望所有孩子都能正常工作,让任何孩子等待锁定并重试。

非常感谢任何建议/例子。

感谢

1 个答案:

答案 0 :(得分:1)

浏览the documentation,我看到了:

dbconn timeout 2000

将锁定获取超时设置为2秒。或者你可以修改busy方法。 应该的时间似乎取决于您进行了多少争用(必须根据您的硬件和代码部署进行调整的因素)以及SQLite是否已经编译并支持短暂睡眠(如果HAVE_USLEEP在配置期间不是1,显然bad things can happen。如果你有这样一个狡猾的构建,我强烈建议修复,因为你不知道还有什么错误配置。