SQLite在使用1个事务(读/写)和1个与非事务相关的读/写操作时引发以下异常:“数据库已锁定”
SQLite的默认隔离级别为Serialized,并且应该;据我了解;锁定受插入或更新操作影响的所有页面。 (因此,仍然可以选择这些数据集)
在以下情况下会发生异常:与事务的连接(序列化)创建临时表并用数据填充它们。第二个连接(未应用任何事务)创建一个表。在这一点上已经引发了异常。但是,与非事务相关的连接不会从这些临时表中进行读取/写入,因此不应在任何方面产生干扰。
经过一些在线搜索,我发现了WAL DB configuration option,在3.7版中进行了介绍。即使认为journal_mode已更改为WAL,仍会发生异常。
为什么会发生异常?连接不应在同一页面上分配锁。此外,有什么解决方案可以在不同事务中读取/写入不同的表?