Können verschiedene verbindungen der gleichen sqlite-Datenbank beginnen Transaktionen gleichzeitig?
Traf ich mich mit einem seltsamen problem mit sqlite3. Ich erhielt verschiedene verbindungen der gleichen Datenbank-Datei mittels open () - Methode. Verbindung 1 beginnt eine Transaktion, und Verbindung 2 beginnt eine andere Transaktion, die zur Aktualisierung mehrerer Datensätze einer Tabelle. Dann Verbindung 1 commit der Transaktion, gefolgt von Anschluss 2 commit für die Transaktion ausgeführt. Aber ich fand, dass der update-Befehl von Verbindung 2 ist eigentlich nie eine Aktualisierung des Datensatzes in der Datenbank. Es gibt keine Ausnahme von throwed während dieser Prozedur. Ich weiß nicht, warum das problem Auftritt. Kann mir jemand erklären, warum mir?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie Lesen Sie die SQLite-Dokumentation werden Sie sehen, dass es unterstützt mehrere verbindungen, die nur zum Lesen, Sie können nicht in die Datenbank schreiben und aus einer unbegrenzten Anzahl von verbindungen, weil es nicht dafür vorgesehen.
http://www.sqlite.org/faq.html#q5
Es sei denn, Sie verwenden BEGINNEN SOFORT zum initiieren von Transaktionen, laufen Sie Gefahr, dass ein rollback, und wiederholen Sie. Ein BEGINNEN, nicht sperren; die nachfolgenden UPDATE-oder INSERT-bekommt die Sperre, und Sie brauchen, um zu überprüfen, das Ergebnis-code, um zu sehen, wenn Sie Versagen. Finden Sie auf dieser Seite Transaktionen und dieses auf sperren.