2014-03-25 49 views
0

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

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

任何意见/例子非常感谢。

感谢

+0

从技术上讲,该错误来自SQLite(或至少是它的Tcl接口),而不是来自Tcl本身。 –

回答

1

通过the documentation看,我看到:

dbconn timeout 2000 

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

+0

你好,谢谢你..但繁忙的方法不叫... ..问题..你有任何工作代码的例子,我可以看看? –