1

关注点

  • SQLite 3.7.12.1 / C++
  • SQLITE_OS_OTHER = 1(提供同步方法)
  • SQLITE_THREADSAFE = 1
  • 日记模式=记忆;

场景

  1. 在 RAM 中创建的带有表 A1 (r/w) 的数据库池“A”。
  2. 在闪存/硬盘上创建的带有 FTS4 表 B1 (r/w) 的数据库池“B”。A1 以只读方式附加到此池。

A1在一个线程(事务)中不断更新。B1在另一个线程(事务)中更新,但更新取决于 A1 查询选择。当 B1 被更新(插入/更新/删除)和 A1 被同时修改时,很多时候会出现以下错误:“数据库磁盘映像格式错误”并且下一个事务失败并出现错误:“无法在事务中启动事务”。

问题

是什么导致了第一个错误?A1 在 B1 查询中是只读的。尽管事务是独立的,并且不需要同步。当我将所有事务与外部互斥锁同步时,不会出现此错误。

4

0 回答 0