在 go 中迭代行并写入数据库时,sqlite 数据库被锁定

问题描述 投票:0回答:1

我正在尝试迭代一些记录,调用一些API来检索一些信息并再次写入数据库。

我正在写入查询的不同表,因此不应有任何冲突。

但是,在迭代行并尝试在插入语句上调用 stmt.Exec 时,我得到了

database is locked error

我无法关闭连接或行,因为我仍然需要迭代它们。

在这种情况下我有什么选择?

创建另一个数据库连接是唯一的选择吗?

或者这是 sqlite 的一些限制?我们可以做些什么来克服这个限制吗?

sqlite go
1个回答
0
投票

在迭代查询结果时不能使用相同的连接,因为您的连接正忙于读取行。以下是您可以使用的选项:

  • 按照您提到的方式显式创建第二个连接。
  • 使用至少有两个连接的连接池(更推荐)。
© www.soinside.com 2019 - 2024. All rights reserved.