Nous vous proposons aujourd’hui un tutoriel sur la réparation du fichier d’une base de données H2 corrompue.
Qu’est ce qu’une base de données H2 ?
H2 est un système de gestion de base de données relationnelle écrit en Java. Il peut être intégré à une application Java ou bien fonctionner en mode client-serveur. Son fichier jar est petit : environ 1 Mo. (source : Wikipédia)
Pourquoi réparer une base de données H2 ?
Récemment, une application de gestion que nous utilisons de temps à autre générait des exceptions (org.h2.jdbc.JdbcSQLException: File corrupted
while reading record) lors de l’utilisation de certaines fonctionnalités.
Il semblerait que cette erreur soit fréquente lorsque vous utilisez (par malchance) l’application en question et que votre anti-virus scanne en même temps le fichier de base de données H2.
Nous vous indiquerons dans un futur tutoriel comment ajouter une exception dans un anti-virus pour palier à ce type de problématique.
Installons à présent la console H2.
Installation de la console H2
Pour effectuer la réparation de votre base , il vous faudra installer la console H2 disponible sur cette page.
Dans notre cas, nous allons utiliser le lien Windows Installer.
Une fois le téléchargement effectué, exécuter « h2-setup-2014-04-05.exe ». Vous obtenez le dialogue suivant :
Cliquez sur le bouton « Suivant > ».
Maintenant, cliquez sur le bouton « Installer ».
Enfin, décochez la case « Afficher le fichier Readme » puis cliquez sur le bouton « Fermer ».
Maintenant que la console H2 est installée, nous allons voir comment utiliser cette dernière.
Utilisation de la console H2
Ouvrez votre menu « Démarrer » et cliquez sur l’item « H2 Console » comme le montre la capture ci-dessous.
Si vous utilisez un système d’exploitation Windows 7 ou plus récent, vous pourriez obtenir une alerte de sécurité :
Cliquez simplement sur le bouton « Autoriser l’accès » de sorte que la console H2 puisse fonctionner correctement.
Au lancement de la console, votre navigateur web par défaut va se lancer et afficher la page d’accueil de la console.
Nous vous proposons ensuite 2 méthodes pour effectuer une réparation d’une base de données H2 :
- Une première méthode en utilisant une simple réparation
- Une deuxième méthode en utilisant une sauvegarde, une suppression et une restauration.
Réparation de la base de données : 1ère méthode
Cliquez sur le menu « Outils », puis sur « Réparation ».
Dans le champ « Répertoire », indiquez le chemin d’accès à votre base de données H2. Vous pouvez renseigner des chemins absolus ou bien des chemins relatifs à votre répertoire utilisateur.
Dans le champ « Nom de la base de données », saisissez le nom de votre base de données.
Par exemple, votre base de données est localisée à cet endoit : C:\Users\monnomutilisateur\monrepertoire\mabasededonnees.h2.db
Vous devrez donc remplir le champ « Répertoire » avec ~/monrepertoire/ et le champ « Nom de la base de données » avec mabasededonnees.
Note : il ne faut pas mettre l’extension du fichier.
Ensuite, cliquez sur le bouton « Exécuter ».
Testez maintenant votre base de données réparée en utilisant l’application concernée. Si celle-ci génère encore des exceptions (org.h2.jdbc.JdbcSQLException: File corrupted
while reading record), il vous faudra passer par la 2ème méthode.
Réparation de la base de données : 2ème méthode
Pour la 2ème méthode, il vous faudra malheureusement, le nom d’utilisateur et le mot de passe de votre passe de données H2.
Dans le cas d’une application open source, cette information peut-être obtenue généralement sur le site de l’application, auprès de ces développeurs ou bien sur leur forum.
Si vous avez le couple nom d’utilisateur/mot de passe, alors vous pouvez poursuivre la restauration de votre base de données.
Sauvegarde de la base de données
Dans le menu de la console H2, cliquez sur l’item « Script ». Nous allons créer une sauvegarde de notre base de données au format SQL.
Dans le champ « URL base de données source », remplacez /test par votre chemin. Pour nous ce sera : /monrepertoire/mabasededonnees
Note : il ne faut pas mettre l’extension du fichier.
Renseignez le champ « Nom d’utilisateur » avec le nom d’utilisateur obtenu.
Renseignez le champ « Mot de passe » avec le mot de passe obtenu.
Dans le champ « Nom du fichier script cible », laissez la valeur par défaut. Votre sauvegarde ira à la racine de votre répertoire utilisateur.
Cliquez sur le bouton « Exécuter ».
Nous avons correctement sauvegardé notre base de données, nous allons à présent la restaurer.
Avant cette opération, il faut aller, à l’aide de l’explorateur de fichiers, vider le répertoire ou se trouve les fichiers corrompus de votre base. Je vous conseille fortement de les zippé et de bien sauvegarder le fichier zip au cas où. Notez également l’extension de votre fichier (ex. .h2.db, mv.db, etc.).
A présent que notre répertoire est bien vide, nous allons restauré notre base de données avec le script SQL généré précédemment.
Restauration de la base de données
Cliquez sur le menu « Exécuter le script », vous visualisez maintenant l’écran ci-dessous :
Dans le champ « URL base de données cible », remplacez /test par le chemin d’accès à votre base de données. Pour notre exemple, ce sera : /monrepertoire/mabasededonnees
Note : si l’extension de votre fichier initial était .h2.db, il vous faut rajouter le paramètre ;mv_store=false juste derrière l’URL. Ex : /monrepertoire/mabasededonnees;mv_store=false
Dans le champ « Nom d’utilisateur », renseignez la valeur avec le nom d’utilisateur obtenu.
Dans le champ « Mot de passe », renseignez la valeur avec le mot de passe obtenu.
Attention, le nom d’utilisateur et le mot de passe doivent être strictement identique à ceux utilisés par votre application. En cas d’erreur, votre application ne pourra plus se connecter à la base de données H2 restaurée.
Dans le champ « Nom du fichier script source », laissez la valeur par défaut à moins que vous ayez changer cette valeur lors de la sauvegarde faite précédemment.
Cliquez sur le bouton « Exécuter ».
Vous venez de terminer la restauration de votre base de données et votre base de données H2 devrait fonctionner de nouveau correctement.
Conclusion
Nous venons de voir comment réparer une base de données H2 corrompue (pour différentes raisons) par un logiciel anti-virus.
Après une rapide installation de l’utilitaire H2 Console, nous avons aborder la réparation de notre fichier à l’aide de 2 méthodes :
- La 1ère peut fonctionner pour les plus chanceux lorsque le fichier est peu abîmé.
- La 2ème méthode fonctionne de manière générale dans presque tous les cas.
A présent, vous êtes en mesure de sauvegarder, restaurer, réparer une base de données H2.
Merci pour cet article pertinent!