La base de données refuse de s'ouvrir ? Récupérez-la maintenant
- Déposez le fichier .db / .sqlite
- La récupération s'exécute en local
- Téléchargez une base de données neuve et ouvrable
Pour récupérer une base de données SQLite malformée, on ne « répare » pas le fichier cassé sur place — on lit tout ce qui est encore décodable et on l'écrit dans une base de données entièrement neuve, exactement comme fonctionne la propre commande .recover de SQLite. Cela s'exécute ici même, dans votre navigateur : déposez le fichier ci-dessus, le diagnostic montre ce qui est endommagé, et le moteur de récupération reconstruit le schéma et réinsère chaque ligne qu'il parvient à lire. Rien n'est installé, et la base de données n'est jamais téléversée.
Les erreurs que cela couvre
Error: database disk image is malformed (11)Le classique SQLITE_CORRUPT. Quelque chose dans la structure en pages du fichier est incohérent — une page d'arbre B corrompue, un pointeur de cellule erroné, un nombre de pages qui ne concorde pas avec la taille du fichier. Le moteur s'arrête au premier problème rencontré, mais les pages qu'il n'a jamais atteintes sont généralement intactes, et un balayage brut peut en extraire les lignes directement.
file is not a databaseSQLite affiche cela lorsque le nombre magique de 16 octets de l'en-tête (« SQLite format 3\0 ») est incorrect. Deux causes très différentes : les octets de l'en-tête ont été endommagés (les pages qui se trouvent derrière sont souvent intactes et récupérables), ou le fichier est réellement autre chose — ou encore une base de données chiffrée (SQLCipher/SEE), qui se lit comme un bruit à haute entropie et ne peut pas être récupérée sans la clé. Le diagnostic fait la différence entre les deux.
database or disk is full / malformed database schemaDes symptômes dérivés du même dommage de pages sous-jacent. Si rouvrir le fichier produit le même échec, les corrections sur place sont épuisées et une reconstruction à partir des pages survivantes est l'étape suivante.
Comment un fichier SQLite se casse : pages et pointeurs
Une base de données SQLite est un tableau plat de pagesde taille fixe (généralement 4 Ko chacune). La page 1 contient l'en-tête et le schéma ; chaque table et chaque index est un arbre Bdont les pages internes pointent vers le bas, vers les pages feuilles qui contiennent vos lignes réelles. Le logiciel lit l'en-tête, trouve le schéma, puis suit ces pointeurs jusqu'aux données.
Les pointeurs sont le point faible. Une seule écriture interrompue, un secteur défectueux, une synchronisation qui s'est arrêtée à mi-chemin, ou un bit inversé dans une page interne, et la chaîne de pointeurs se rompt — SQLite rencontre une incohérence et déclare toute l'image malformée, alors même que vos lignes reposent toujours, intactes, dans leurs pages feuilles. C'est la même histoire que l'index manquant d'une vidéo ou le répertoire central cassé d'un ZIP : c'est la carte qui s'est cassée, pas les données.
C'est pourquoi la récupération fonctionne : les pages feuilles portent des enregistrements autodescriptifs, si bien que le moteur peut parcourir le fichier page par page, décoder les lignes qu'il trouve et reconstruire les arbres B de zéro autour d'elles. Les lignes que les pointeurs ne peuvent pas atteindre sont retrouvées par un balayage brut ; les lignes qui ne correspondent à aucune table connue vont dans une tablelost_and_found au lieu d'être jetées.
Si vous avez un fichier -wal, apportez-le
Les bases de données en mode WAL préparent les changements récents dans un fichier voisin <name>-wal jusqu'à ce qu'ils soient consolidés (checkpoint) dans la base de données principale. Après un plantage, vos données validées les plus récentes peuvent ne vivre que là. Déposez d'abord le .db principal, puis ajoutez le fichier-wal dans l'emplacement facultatif pour fichier auxiliaire : ses trames validées sont superposées avant le balayage, de sorte que la base de données récupérée reflète la dernière transaction validée plutôt que le dernier checkpoint. C'est facultatif — la récupération fonctionne très bien avec le seul fichier principal — mais si vous avez ce fichier auxiliaire, c'est souvent là que se trouvent les lignes les plus fraîches.
Pourquoi le « sans téléversement » compte pour les bases de données
Pensez à ce que contient réellement une base de données : comptes d'utilisateurs, messages, historique de localisation, l'état entier d'une application. C'est le fichier qu'on voudrait le moins voir traîner sur le serveur de quelqu'un d'autre « juste pour le réparer ». Les outils de récupération fondés sur le téléversement le copient depuis votre machine et le traitent sur une infrastructure que vous ne pouvez pas inspecter. La récupération dans le navigateur supprime cette étape entièrement — le fichier est lu depuis votre disque, reconstruit dans votre onglet, et aucune copie n'existe ailleurs. Pour le travail forensique (DFIR) sur des preuves, cela préserve aussi la chaîne de possession intacte : l'artefact ne quitte jamais le poste de travail. Vous pouvez le vérifier dans l'onglet Réseau pendant que la récupération s'exécute.
Ce que cela peut et ne peut pas récupérer
Peut récupérer
- « Database disk image is malformed » dû à une page endommagée ou à un pointeur d'arbre B
- Des champs d'en-tête corrompus (taille ou nombre de pages incorrect) avec des pages intactes derrière eux
- Fichiers tronqués : chaque ligne d'une page survivante est extraite
- Les lignes des pages que la chaîne de pointeurs ne peut plus atteindre, via un balayage de pages brut
- Les changements non consolidés d'un fichier auxiliaire
-walfourni
Ne peut pas récupérer
- Les lignes physiquement écrasées ou coupées à la fin — ces données n'existent plus
- Les bases de données chiffrées (SQLCipher/SEE) sans la clé — les pages sont du texte chiffré
- Les affinités exactes des colonnes : les valeurs reviennent selon leur classe de stockage sur disque
- Une garantie d'exactitude — les données récupérées sont toujours suspectes ; vérifiez-les
- Les fichiers de 0 octet : c'est d'abord un problème de récupération de données du périphérique de stockage
Le rapport de récupération énumère ce qui est sorti de chaque table, signale les lignes extraites par le balayage brut ou abandonnées car indécodables, et une récupération échouée n'est jamais facturée.