0

我有一个被多个应用程序使用的 SQLite 数据库。我一直认为 SQLite 允许多个同时读取,但在给定时间只有一个应用程序可以写入它。这是不正确的吗?

布局是我有一个 Java 应用程序,它正在连续写入数据库(每秒 1 个事务,该事务中有多个插入)。这是一个历史数据库,所以它总是存储数据。

我有另一个 C# 应用程序(不是我编写的),当用户请求报告(基本上是数据转储)时,它会从该数据库中读取数据。当我运行此报告时,Java 应用程序将收到 SQLite 异常 SQLITE_BUSY “数据库文件已锁定”异常,并且在那几秒钟内无法插入数据。

我的问题是,这正常吗?还是应该在插入仍在进行时进行读取?如果这是正常的,我将不得不添加功能以在发生故障时重试 INSERTING。还是我没有编写的 C# 代码中的某些内容可能会不必要地锁定数据库以进行读取?

4

0 回答 0