QSqlError(“5”,“无法抓取行”,“数据库被锁定”)

问题描述:

我得到这个错误“QSqlError("5", "Unable to fetch row", "database is locked")QSqlError(“5”,“无法抓取行”,“数据库被锁定”)

我已经做了我的研究,我认为从事实的问题出现了,我我正在执行INSERT查询,而SELECT查询仍处于活动状态,这会锁定数据库。现在我想象会经常遇到这个问题,因为通常根据SELECT查询的输出写入数据库,所以我想问一下解决这个问题的最好方法是什么?在关闭query.finish()以解锁数据库后,我能够获取查询(使用query.next())吗?或者我应该将结果存储在临时容器中,关闭查询然后遍历临时容器?

非常感谢你提前

+2

的“数据库被锁定”发生错误时,才会有*有一个活动事务的另一个*连接。但无论如何,如果您修改了当前正在阅读的数据,则结果是未指定的。 –

+0

您能否详细说明“结果未指定”? –

+0

结果行可以直接从表中读取,也可以从临时排序列表或索引读取。因此,当您在遍历表时进行更改时,可能会丢失或重复条目。 –

你有当您运行此上的数据库阅读器?我有一个类似的问题,只有当我运行DB Browser for SQLite时才会发生。确保您没有任何其他打开数据库文件的软件。我并不总是在使用DB Browser for SQLite时遇到这个问题,但是当我这样做时,关闭程序就修复了它。

它除了,我倾向于运行query.finish()每个查询完成后,确保没有互动。

我希望这可以帮助你!