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. P>
Merci beaucoup! P>
3 Réponses :
SQLite est spécifique em> conçu pour protéger contre cela. A partir de la page officielle SQLite est transactionnelles em> : p>
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 p>
La demande du paragraphe précédent est
largement vérifié dans le SQLite
suite de tests de régression en utilisant une spéciale
faisceau d'essai qui simule la
effets sur un fichier de base de données
plantage du système d'exploitation et de la puissance
échecs. p>
blockQuote>
Vous pourriez également être intéressé par l'article SQLite Atomic validation dans SQLite em> a> si vous avez besoin de connaître les détails de précises sur la façon de protéger contre les accidents tels que ci-dessus. p>
Un journal chaud est créé quand un processus est au milieu d'une mise à jour de base de données et un plantage du système d'exploitation ou un programme ou une panne de courant empêche la mise à jour de se terminer. revues chaudes sont une condition d'exception. revues chaudes existent pour récupérer des accidents et des pannes de courant. Si tout fonctionne correctement (qui est, s'il n'y a pas des accidents ou des pannes de courant), vous ne serez jamais un journal chaud. p>
blockQuote>
Le pire qui puisse arriver sera que vous devez supprimer le journal chaud qui reste après un accident. P>
En ce qui concerne l'écriture après un accident: (de verrouillage de fichiers et Concurrency em> ) < / p>
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.
tout pourrait potentiellement se produire sur une mise hors tension soudaine. Cependant, je suggérerais d'atténuer tout risque. P>
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.
As SQLite est conforme à l'acide, une mise hors tension ne devrait pas être un problème. P>
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.