【发布时间】:2012-06-20 19:32:37
【问题描述】:
我有一个不幸的情况,多个 Perl 进程同时写入和读取同一个 SQLite3 数据库。
这通常会导致 Perl 进程崩溃,因为两个进程会同时写入,或者一个进程正在从数据库中读取数据,而另一个进程试图更新同一条记录。
有谁知道我如何协调多个进程以使用同一个 sqlite 数据库?
我将努力将此系统移至不同的数据库引擎,但在此之前,我需要修复它以使其按原样工作。
【问题讨论】:
-
您可以考虑使用 DBIx::Connector 对象连接到数据库,并通过 DBIx::Connector 的
run( fixup => ... )API 运行您的查询。它在失败时重试,并且具有很强的容错能力。在这种情况下,txn()函数可能会更好。