10
votes

Le fichier de base de données de SQLite3 sera-t-il endommagé lors de la mise hors tension ou du système d'exploitation?

J'ouvre le fichier de base de données et obtenez une connexion de base de données à l'aide de la méthode Open () de SQLite3 et la connexion ne sera pas fermée avant la sortie du programme. S'il y a une erreur inattendue, telle que le blocage soudain de l'ordinateur ou du système d'exploitation de l'ordinateur, le mode du fichier de base de données sera-t-il endommagé ou sa poignée perdue? Plus spécifiquement, peut-il rester écritable si je redémarre mon ordinateur? BTW, je me fiche de la perte de données lorsque des erreurs se produisent.

Merci beaucoup!


0 commentaires

3 Réponses :


14
votes

SQLite est spécifique conçu pour protéger contre cela. A partir de la page officielle SQLite est transactionnelles :

Toutes les modifications dans un seul transaction soit dans SQLite se produire complètement ou pas du tout, même si la acte d'écrire le changement vers la disque est interrompu par


3 commentaires

Merci! Je veux aussi savoir si le fichier de base de données (*. DB) restera écritable si une panne de courant se produit pendant que certaines modifications sont écrites dans la base de données.


@QUANTITITY Le verrouillage est effectué au niveau du système d'exploitation, donc après une défaillance soudaine et suivez le redémarrage, le code FSCHK doit effacer cela et le fichier sera accessible à nouveau. Le verrouillage n'est pas effectué en modifiant les attributs de fichier. De plus, à partir des références de l'article dans la réponse, il est clair que les "revues chaudes" sont traitées automatiquement lors de l'accès au fichier DB.


Vous ne devriez jamais supprimer un fichier de journal chaud. Voir la documentation officielle: Comment corrompre un fichier de base de données SQLite , section 1.3.



1
votes

tout pourrait potentiellement se produire sur une mise hors tension soudaine. Cependant, je suggérerais d'atténuer tout risque.


1 commentaires

Et tout peut arriver en raison de rayons cosmiques, mais dans la pratique, une base de données SQLITE3 restera généralement cohérente en cas de perte soudaine de puissance sur des systèmes de fichiers prévisibles.



4
votes

As SQLite est conforme à l'acide, une mise hors tension ne devrait pas être un problème.

http://en.wikipedia.org/wiki/acid


2 commentaires

J'ai bien peur que la mise sous tension affecte les propriétés du fichier et elle ne sera pas ouverte du tout ou je ne peux écrire aucune donnée.


@Quanity, pourquoi avez-vous peur de cela? Tant que vous ne supprimez pas le fichier de journal, SQLite3 devrait être en mesure de réparer la base de données en cas de perte soudaine de puissance.