QSqlError(“5”,“无法抓取行”,“数据库被锁定”)
问题描述:
我得到这个错误“QSqlError("5", "Unable to fetch row", "database is locked")
”QSqlError(“5”,“无法抓取行”,“数据库被锁定”)
我已经做了我的研究,我认为从事实的问题出现了,我我正在执行INSERT
查询,而SELECT
查询仍处于活动状态,这会锁定数据库。现在我想象会经常遇到这个问题,因为通常根据SELECT
查询的输出写入数据库,所以我想问一下解决这个问题的最好方法是什么?在关闭query.finish()
以解锁数据库后,我能够获取查询(使用query.next()
)吗?或者我应该将结果存储在临时容器中,关闭查询然后遍历临时容器?
非常感谢你提前
答
你有当您运行此上的数据库阅读器?我有一个类似的问题,只有当我运行DB Browser for SQLite
时才会发生。确保您没有任何其他打开数据库文件的软件。我并不总是在使用DB Browser for SQLite
时遇到这个问题,但是当我这样做时,关闭程序就修复了它。
它除了,我倾向于运行query.finish()
每个查询完成后,确保没有互动。
我希望这可以帮助你!
的“数据库被锁定”发生错误时,才会有*有一个活动事务的另一个*连接。但无论如何,如果您修改了当前正在阅读的数据,则结果是未指定的。 –
您能否详细说明“结果未指定”? –
结果行可以直接从表中读取,也可以从临时排序列表或索引读取。因此,当您在遍历表时进行更改时,可能会丢失或重复条目。 –