Wird die Datenbankdatei von SQLite3 beschädigt, wenn das System plötzlich herunterfährt oder abstürzt?

8

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!

    
quantity 21.09.2009, 03:37
quelle

3 Antworten

12

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.

    
Mark Rushakoff 21.09.2009, 03:40
quelle
4

Da Sqlite ACID-kompatibel ist, sollte eine Abschaltung kein Problem darstellen.

Ссылка

    
MartW 21.09.2009 03:53
quelle
1

Beim plötzlichen Abschalten könnte irgendetwas passieren. Allerdings würde ich UPS vorschlagen, jedes Risiko zu mindern.

    
Preet Sangha 21.09.2009 03:42
quelle