我的实际问题是python
sqlite3
模块抛出database disk image malformed
。
现在必须有一百万个可能的原因。但是,我可以提供一些线索:
-
我正在使用
python
multiprocessing
生成许多工作线程,这些工作线程都从此数据库读取(而不是写入( -
问题肯定与访问数据库的多个进程有关,这些进程在远程设置上失败,但在本地设置上失败。如果我在远程设置中只使用一个工作人员,它可以工作
-
相同的 6GB 数据库在我的本地计算机上运行良好。我用
git
复制了它,后来又用scp
复制到远程。那里与原始数据库副本相同的脚本给出错误 -
现在,如果我在遥控器上
PRAGMA integrity_check
,它会在一段时间后返回ok
- 即使在问题发生后 -
以下是版本(操作系统均为
Ubuntu
(:- 本地:
sqlite3.version >>> 2.6.0
,sqlite3.sqlite_version >>> 3.22.0
- 遥控器:
sqlite3.version >>> 2.6.0
、sqlite3.sqlite_version >>> 3.28.0
- 本地:
您有一些想法如何允许保存"并行"SELECT
吗?
问题的原因如下(以前发生在我身上(:
将multiprocessing
与sqlite3
一起使用,确保为每个工作线程创建一个单独的连接!
显然,这会导致某些设置出现问题,有时不会。