With debian packages:
        sqlite3                 3.2.1-1                                      
        libsqlite3-0            3.2.1-1
        libdbd-sqlite3-perl     1.08-1 (with looks_like_number test elided)

I have an sqlite3 database that is accessed by a perl cgi script.
I want accesses to block if the database is in use by another process,
and not to fail with an error.
The cgi code looks like:

        my $attr = { RaiseError => 1, AutoCommit => 1 };
        my $cdbh = DBI->connect( "dbi:SQLite:dbname=$CREDB", "", "", $attr);
        $cdbh->func( 3600000, 'busy_timeout' );
        $cdbh->do( q[DELETE FROM m2u WHERE user = ?;], undef, $user);

but I still occasionally get failures:

        DBD::SQLite::db do failed: database is locked(5) at dbdimp.c line 403

Am I doing something wrong?

What is the correct way to make accesses block/retry when the
database is busy?


-jonathan

-- 
Jonathan H N Chin, 2 dan | deputy computer | Newton Institute, Cambridge, UK
<[EMAIL PROTECTED]> | systems mangler | tel/fax: +44 1223 767091/330508

                "respondeo etsi mutabor" --Rosenstock-Huessy

Reply via email to