http://qs321.pair.com?node_id=1073462

zuverlassig has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks, I have a code in which I am trying to access SqLite DB file from multiple processes. Here is my code for one of such processes :

my $driver = "SQLite"; my $database = "some.db"; my $dsn = "DBI:$driver:dbname=$database"; my $userid = ""; my $password = ""; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1, sq +lite_use_exclusive_transaction => 1 }) or die $DBI::errstr; #some drop statements my $dropstmt = qq(DROP TABLE IF EXISTS $db_name); my $rv = $dbh->do($dropstmt); #some create statements my $createstmt = (something); $rv = $dbh->do($createstmt); #some insert statements $insertstmt=qq(some insert statement); $rvw = $dbh->do($insertstmt) or die $DBI::errstr; #some update statments my $sth = $dbh->prepare(some updatestatement); $sth->execute() or die $DBI::errstr;

I am getting these error messages: DBD::SQLite::db do failed: database schema has changed(17) at dbdimp.c line 403 at childprocess.pl line 88.

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

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

Where line 88 is the drop statement, and line 121 is the insert statement and 224 is the update statement Note that there is no commit statement here. Please help me with this.