如何从多个Perl进程中使用相同的SQLite3数据库?

如何从多个Perl进程中使用相同的SQLite3数据库?,perl,sqlite,Perl,Sqlite,我遇到了一个不幸的情况,多个Perl进程同时写入和读取同一个SQLite3数据库 这通常会导致Perl进程崩溃,因为两个进程将同时写入,或者一个进程将从数据库中读取数据,而另一个进程将尝试更新相同的记录 有人知道我如何协调多个进程以使用同一个sqlite数据库吗 我将致力于将此系统移动到另一个数据库引擎,但在此之前,我需要以某种方式修复它,使其能够正常工作。SQLite旨在从多个进程中使用。如果您将sqlite文件托管在网络驱动器上,则会出现一些例外情况,并且可能有一种方法可以编译该文件,使其预

我遇到了一个不幸的情况,多个Perl进程同时写入和读取同一个SQLite3数据库

这通常会导致Perl进程崩溃,因为两个进程将同时写入,或者一个进程将从数据库中读取数据,而另一个进程将尝试更新相同的记录

有人知道我如何协调多个进程以使用同一个sqlite数据库吗


我将致力于将此系统移动到另一个数据库引擎,但在此之前,我需要以某种方式修复它,使其能够正常工作。

SQLite旨在从多个进程中使用。如果您将sqlite文件托管在网络驱动器上,则会出现一些例外情况,并且可能有一种方法可以编译该文件,使其预期从一个进程中使用,但我经常从多个进程中使用它。如果遇到问题,请尝试增加超时值。SQLite使用文件系统锁来保护数据不被同时访问。如果一个进程正在写入文件,则第二个进程可能必须等待。我把我的超时时间设置为3秒,但没有什么问题


< /P>冗长的细节:/SQLite技术/设计文档。您可以考虑使用DBIX::连接器对象连接到DB,并通过代码>运行(FixUp=…>)<代码> API来运行查询。它在失败时重试,并且具有很强的容错性。在这种情况下,

txn()
函数可能会更好。