Ich habe ein seltsames Problem mit sqlite3 festgestellt. Ich habe verschiedene Verbindungen der gleichen Datenbankdatei mit der Methode open () erhalten. Verbindung 1 beginnt eine Transaktion und Verbindung 2 beginnt eine andere Transaktion, die mehrere Datensätze einer Tabelle aktualisieren soll. Dann commit Verbindung 1 die Transaktion, gefolgt von Verbindung 2 Commit seine Transaktion. Aber ich habe festgestellt, dass der Update-Befehl von Verbindung 2 den Datensatz in der Datenbank nie wirklich aktualisiert. Während dieses Vorgangs wird keine Ausnahme ausgelöst. Ich weiß nicht, warum das Problem auftritt. Kann mir jemand den Grund erklären?
Wenn Sie die SQLite-Dokumentation lesen, sehen Sie, dass sie mehrere Verbindungen nur zum Lesen unterstützt. Sie können nicht aus mehreren Verbindungen in die Datenbank schreiben, weil sie dafür nicht ausgelegt ist.
Wenn Sie BEGIN IMMEDIATE nicht zum Initiieren Ihrer Transaktionen verwenden, besteht das Risiko, dass Sie Rollbacks durchführen und sie erneut versuchen müssen. A BEGIN macht keine Verriegelung; Das nachfolgende UPDATE oder INSERT ruft die Sperre ab und Sie müssen den Ergebniscode überprüfen, um festzustellen, ob sie fehlgeschlagen sind. Sehen Sie diese Seite auf Transaktionen und diese auf sperrt .
Tags und Links sqlite transactions