我有一个TCL应用程序,其中多个孩子从一个数据库连接读取和写入到sqlite数据库,并且作为子进程的时间可能比其他时间长,我遇到“数据库锁定”错误由TCL抛出。防止数据库锁sqlite tcl
我知道我可以用sqlite的TCL API忙回调方法 - 但它似乎没有被调用,即使db被锁定。我只是希望所有的孩子都能正常工作,并让任何孩子等待锁定并重试。
任何意见/例子非常感谢。
感谢
我有一个TCL应用程序,其中多个孩子从一个数据库连接读取和写入到sqlite数据库,并且作为子进程的时间可能比其他时间长,我遇到“数据库锁定”错误由TCL抛出。防止数据库锁sqlite tcl
我知道我可以用sqlite的TCL API忙回调方法 - 但它似乎没有被调用,即使db被锁定。我只是希望所有的孩子都能正常工作,并让任何孩子等待锁定并重试。
任何意见/例子非常感谢。
感谢
通过the documentation看,我看到:
dbconn timeout 2000
将锁定获取超时设置为2秒。或者你可以修改busy
方法。 应该多长时间似乎取决于你进行了多少争用(一个因素必须根据你的硬件和代码部署进行调整),以及SQLite是否支持短暂睡眠编译(如果HAVE_USLEEP
在配置期间不是1
,显然是bad things can happen)。如果你有这样一个狡猾的构建,我强烈建议修复,因为你不知道什么是错误配置。
你好,谢谢你..但繁忙的方法不叫... ..问题..你有任何工作代码的例子,我可以看看? –
从技术上讲,该错误来自SQLite(或至少是它的Tcl接口),而不是来自Tcl本身。 –