bodacydo bodacydo -4 years ago 98
Perl Question

How to use the same SQLite3 database from multiple Perl processes?

I've an unfortunate situation where multiple Perl processes write and read the same SQLite3 database at the same time.

This often causes Perl processes to crash as two processes would be writing at the same time, or one process would be reading from the database while the other tries to update the same record.

Does anyone know how I could coordinate the multiple processes to work with the same sqlite database?

I'll be working on moving this system to a different database engine but before I do that, I somehow need to fix it to work as it is.

Answer Source

SQLite is designed to be used from multiple processes. There are some exceptions if you host the sqlite file on a network drive, and there maybe a way to compile it such that it expects to be used from one process, but I use it from multiple processes regularly. If you are experiencing problems, try increasing the timeout value. SQLite uses the filesystem locks to protect the data from simultaneous access. If one process is writing to the file, a second process might have to wait. I set my timeouts to 3 seconds, and have very little problems with that.

Here is the link to set the timeout value

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download