Ich öffne die Datenbankdatei und erhalte eine Datenbankverbindung mit der Methode open () von sqlite3 und die Verbindung wird nicht geschlossen, bis das Programm beendet wird. Wenn ein unerwarteter Fehler auftritt, wie z. B. plötzliches Ausschalten des Computers oder Absturz des Betriebssystems, wird der Modus der Datenbankdatei beschädigt oder sein Griff verloren? Genauer gesagt, kann es beschreibbar bleiben, wenn ich meinen Computer neu starte? BTW, ich interessiere mich nicht für den Datenverlust, wenn Fehler auftreten.
Vielen Dank!
SQLite ist speziell entwickelt, um dies zu schützen. Von der offiziellen Seite SQLite ist Transaktion :
Alle Änderungen innerhalb eines einzigen Transaktion in SQLite entweder auftreten ganz oder gar nicht, auch wenn die Akt des Schreibens der Änderung an die Datenträger wird durch
unterbrochen
- ein Programmabsturz,
- ein Betriebssystemabsturz oder
- ein Stromausfall.
Der Anspruch des vorherigen Absatzes ist ausführlich in der SQLite überprüft Regressionstest-Suite mit einem speziellen Testkabel, das die simuliert Auswirkungen auf eine Datenbankdatei von Betriebssystem stürzt ab und Strom Fehler.
Sie könnten sich auch für den SQLite-Artikel Atomic Commit in SQLite interessieren, wenn Sie ihn benötigen die spezifischen Details darüber zu kennen, wie sie vor Abstürzen wie dem oben beschriebenen schützen.
Zum Schreiben nach einem Absturz: (aus Dateisperrung und Parallelität )
Ein heißes Journal wird erstellt, wenn sich ein Prozess mitten in einem Datenbankupdate befindet und ein Programm- oder Betriebssystemabsturz oder ein Stromausfall verhindert, dass das Update abgeschlossen wird. Heiße Journale sind eine Ausnahmebedingung. Heiße Journale existieren, um sich von Abstürzen und Stromausfällen zu erholen. Wenn alles korrekt funktioniert (das heißt, wenn es keine Abstürze oder Stromausfälle gibt), erhalten Sie nie ein heißes Journal.
Das Schlimmste, was passieren kann, ist, dass Sie das heiße Journal löschen müssen, das nach einem Absturz übrig geblieben ist.
Beim plötzlichen Abschalten könnte irgendetwas passieren. Allerdings würde ich UPS vorschlagen, jedes Risiko zu mindern.
Tags und Links crash sqlite3 fault-tolerance acid data-integrity