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

时间:2012-06-20 19:32:38

标签: perl sqlite

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

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

有谁知道如何协调多个进程以使用相同的sqlite数据库?

我将努力将这个系统移动到不同的数据库引擎,但在我这样做之前,我需要修复它才能正常工作。

1 个答案:

答案 0 :(得分:7)

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

Here is the link to set the timeout value