我有一个TCL应用程序,其中多个子进程从单个数据库连接读取和写入到sqlite数据库,并且子进程的sone可能比其他进程花费的时间更长,我遇到TCL抛出的“数据库锁定”错误。
我知道我可以使用TCL API为sqlite提供繁忙的回调方法 - 但即使数据库被锁定,它似乎也没有被调用。我只是希望所有孩子都能正常工作,让任何孩子等待锁定并重试。
非常感谢任何建议/例子。
感谢
答案 0 :(得分:1)
浏览the documentation,我看到了:
dbconn timeout 2000
将锁定获取超时设置为2秒。或者你可以修改busy
方法。 应该的时间似乎取决于您进行了多少争用(必须根据您的硬件和代码部署进行调整的因素)以及SQLite是否已经编译并支持短暂睡眠(如果HAVE_USLEEP
在配置期间不是1
,显然bad things can happen。如果你有这样一个狡猾的构建,我强烈建议修复,因为你不知道还有什么错误配置。