当使用Perl DBD :: SQLite时,SQLite是否存在已知问题,在单个事务中为第二个查询提供"数据库已锁定"错误?场景:Linux,Perl DBI,AutoCommit => 0,一个带有两个代码块的子例程(使用块来本地化变量名).在第一个代码块中,一个查询句柄由select()在select语句中创建,它被执行()并且块被关闭.第二个代码块是通过准备更新语句创建的另一个查询句柄,并且经常(30%的时间)SQLite/DBI在此阶段给出数据库锁定错误.我认为错误发生在prepare()期间而不是在execute()期间.
我的工作是在第一次查询后提交.(在第一个查询上调用完成没有帮助).我不喜欢有几个与优雅和表现有关的理由.Postgres作为数据库,原始代码已经运行了很多年.我试过sqlite_use_immediate_transaction没有效果.
在所有其他情况下,我发现SQLite表现得非常好,所以我怀疑这是DBD驱动程序中的疏忽,而不是SQLite的问题.遗憾的是,我目前的代码是一大堆脚本和模块,所以我没有一个简短的单个文件测试用例.