Gibt es ein bekanntes Problem mit SQLite, das den Fehler "Datenbank ist gesperrt" für eine zweite Abfrage in einer einzigen Transaktion bei Verwendung von Perl DBD :: SQLite liefert? Szenario: Linux, Perl DBI, AutoCommit => 0, eine Subroutine mit zwei Codeblöcken (mit den Blöcken zur Lokalisierung von Variablennamen). Im ersten Codeblock wird ein Abfrage-Handle von prepare() für eine select-Anweisung erstellt, ausgeführt() und der Block geschlossen. Der zweite Codeblock Ein anderer Abfrage-Handle wird erstellt, indem auf eine update-Anweisung vorbereitet wird, und häufig (30% der Zeit) gibt SQLite/DBI zu diesem Zeitpunkt einen Datenbank-gesperrten Fehler. Ich denke, der Fehler passiert während prepare() und nicht während der Ausführung().Warum gibt SQLite eine "Datenbank ist gesperrt" für eine zweite Abfrage in einer Transaktion bei Verwendung von Perls DBD :: SQLite?
Meine Arbeit besteht darin, nach der ersten Abfrage zu committen. (Der Aufruf der ersten Abfrage hat nicht geholfen). Ich ziehe es vor, mich aus mehreren Gründen, die sich auf Eleganz und Leistung beziehen, nicht zu verpflichten. Der ursprüngliche Code hat viele Jahre mit Postgres als Datenbank funktioniert. Ich habe sqlite_use_immediate_transaction ohne Wirkung versucht.
In allen anderen Situationen habe ich festgestellt, dass SQLite sehr gut funktioniert, daher vermute ich, dass dies ein Versehen im DBD-Treiber ist und kein Problem mit SQLite. Leider ist mein aktueller Code ein großer Stapel von Skripten und Modulen, daher habe ich keinen kurzen Testfall für eine einzelne Datei.
Können Sie uns Ihren kleinen Testfall zeigen, der das Problem aufzeigt? –