perl - 如何从多个 Perl 进程使用同一个 SQLite3 数据库?

标签 perl sqlite

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

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

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

我将致力于将此系统移动到不同的数据库引擎,但在我这样做之前,我需要以某种方式修复它以使其按原样工作。

最佳答案

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

Here is the link to set the timeout value

关于perl - 如何从多个 Perl 进程使用同一个 SQLite3 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11126845/

相关文章:

perl - 脚本 : Read condition written in words and converting into C - ternary operator

perl - 根据更新时间和严重性获取记录

ruby-on-rails - 如何显示 future 预订的产品?

ios - 像 Yell.com 这样的公司在他们的应用程序中使用什么数据系统?

c# - 我如何将 'trim' C# 加倍到它将存储在 sqlite 数据库中的值?

perl - 如何多次使用反向引用?

perl - 使用 Perl 的 LWP 时是否可以根据 `Content-Type` 中止 HTTP 请求?

regex - 如何使用 smartmatch 检查字符串是否与数组中的所有模式匹配?

Android Sqlite 检查两个不同的列中是否存在两个值

Python sqlite3 和并发