Réparer un places.sqlite de Firefox corrompu (marque-pages et historique)

Quand Firefox décide que places.sqlite est corrompu, il renomme le fichier sans prévenir, en démarre un vierge et ne restaure que vos marque-pages depuis une sauvegarde : votre historique est perdu. L'ancienne base de données reste généralement lisible page par page, et elle peut être reconstruite sans jamais quitter votre appareil.

Votre fichier ne quitte jamais votre appareil — la réparation s'exécute dans votre navigateur. 0 octet téléversé.

Your data is the big block — usually intact. What breaks is the small index. Repair rebuilds it.

Drop a file here or browseTap to choose a file

ZIP · Office · PDF · video · JPG · PNG · RAR/7z · SQLite — repaired right here in your browser. Nothing is uploaded

0 bytes uploadedFree: 3 repairs/day — up to 500 MB video, 100 MB docs & archives, 50 MB photos. Free download. Single repair €5.90. No account required.

Réparer maintenant

  1. Déposez le fichier
  2. La réparation s'exécute en local
  3. Téléchargez le résultat

places.sqlite est l'unique base de données SQLite où Firefox conserve tout votre historique de navigation, chaque marque-page, ainsi que les étiquettes, les mots-clés et les annotations de pages. Quand elle se détériore, soit vous voyez Firefox se réinitialiser en silence — les marque-pages réapparaissent mais l'historique a disparu —, soit un outil signale "database disk image is malformed". C'est le SQLITE_CORRUPT de SQLite (code de résultat 11) : une page ou un pointeur s'est rompu et le moteur rejette le fichier entier, alors que vos lignes restent généralement intactes dans leurs pages feuilles. Déposez places.sqlite (ou le fichier places.sqlite.corrupt que Firefox a laissé derrière lui) ci-dessus, et la récupération parcourt les pages dans votre navigateur, reconstruit le schéma et écrit une base de données neuve qui, elle, s'ouvre — sans rien téléverser.

Ce que contient places.sqlite, et ce qui s'est réellement cassé

Tout le système de marque-pages et d'historique de Firefox réside dans un seul fichier. moz_places conserve une ligne par URL que vous avez visitée ou mise en marque-page : son url, son title, rev_host (l'hôte inversé, pour regrouper rapidement les domaines), visit_count, last_visit_date, un guid, un url_hash et frecency, un score propre à Firefox qui combine fréquence et récence (frequency + recency) et classe les suggestions de la barre d'adresse. Chaque visite concrète est une ligne de moz_historyvisits, dont le place_id renvoie à moz_places.id. Votre arbre de marque-pages, c'est moz_bookmarks : chaque ligne porte un parent, une position, un title, un guid et une clé étrangère fk vers moz_places. L'arbre est suspendu à des dossiers racines fixes dotés de guids permanents de 12 caractères : root________, menu________ (Menu des marque-pages), toolbar_____ (Barre des marque-pages), unfiled_____ (Autres marque-pages), mobile______ et tags________. Autour d'eux se trouvent moz_origins, moz_keywords, les tables d'annotations moz_anno_attributes/moz_annos/moz_items_annos, moz_inputhistory et moz_meta. Les favicons ne sont pas ici : depuis Firefox 55, ils résident dans un favicons.sqlite distinct, dans le même profil.

Physiquement, le fichier est un tableau plat de pages de taille fixe. Firefox crée places.sqlite avec une taille de page de 32 KiB (PRAGMA page_size = 32768, compilée en tant que SQLITE_DEFAULT_PAGE_SIZE) — huit fois la valeur par défaut de 4 KiB de SQLite — et l'exécute en mode WAL, si bien que vous verrez deux fichiers frères à côté : places.sqlite-wal (le journal d'écriture anticipée) et places.sqlite-shm (un index en mémoire partagée). La page 1 contient l'en-tête et le schéma ; chaque table et index est un arbre-B dont les pages internes pointent vers le bas, vers les pages feuilles qui contiennent vos lignes.

Ces pointeurs sont le point faible. Une écriture interrompue, un plantage en plein checkpoint, un disque plein, un secteur défectueux ou un octet retourné dans une seule page interne de 32 KiB suffisent : SQLite suit le pointeur, tombe sur quelque chose qui n'est pas une page valide et déclare toute l'image corrompue — alors que vos lignes reposent intactes dans les pages feuilles qu'il n'a jamais atteintes. C'est la carte qui s'est cassée, pas les données.

Ce que fait Firefox lorsqu'il détecte la corruption — et pourquoi l'historique disparaît

Firefox vérifie places.sqlite au démarrage. Si l'ouverture bute sur SQLITE_CORRUPT ou qu'un contrôle d'intégrité échoue, le service Places considère le fichier comme inutilisable et fait quelque chose de radical sans rien demander : il renomme places.sqlite en places.sqlite.corrupt dans le dossier du profil, crée un places.sqlite tout neuf et vide, puis restaure vos marque-pages depuis le fichier le plus récent du dossier bookmarkbackupsbookmarks-YYYY-MM-DD_<count>_<hash>.jsonlz4, compressé avec le mozLz4 de Mozilla (un magic de 8 octets mozLz40\0, puis une taille décompressée de 4 octets en little-endian, puis un bloc LZ4 — ce n'est pas du LZ4 standard, si bien que les outils ordinaires ne l'ouvrent pas).

Voici le piège qui pousse les gens à chercher une solution : seuls les marque-pages sont sauvegardés de cette façon. L'historique, les scores de frecency, les mots-clés et l'historique de saisie ne sont jamais écrits dans ces fichiers .jsonlz4, si bien qu'une réinitialisation reconstruit discrètement votre arbre de marque-pages et jette tout le reste. Vos marque-pages reviennent avec bonne allure ; des mois ou des années d'historique disparaissent tout simplement de la base de données active.

Les chaînes d'erreur que vous verrez réellement, et ce qu'elles signifient : database disk image is malformed correspond à SQLITE_CORRUPT (code de résultat 11) — une page endommagée, un décalage de cellule incorrect, ou un nombre de pages qui ne concorde pas avec la taille du fichier. file is not a database correspond à SQLITE_NOTADB (code 26) : le magic de 16 octets SQLite format 3\000 de l'en-tête est endommagé, même si les pages derrière lui sont souvent intactes. Et The bookmarks and history system will not be functional because one of Firefox's files is in use by another application est une tout autre bête : c'est un verrou (SQLITE_BUSY), généralement un second processus Firefox ou un antivirus qui retient le fichier, et non une corruption. Comme le renommage se produit automatiquement, le temps que vous remarquiez la barre vide, les bonnes données sont déjà dans places.sqlite.corrupt et le places.sqlite actif est vierge.

Comment la récupération le reconstruit en local

Plutôt que de rafistoler le fichier cassé sur place, l'outil lit directement ses pages de 32 KiB, reconstruit le schéma à partir de la page 1, parcourt l'arbre-B de chaque table et se rabat sur un balayage brut des pages, sans pointeurs, pour les lignes que les pointeurs cassés ne peuvent plus atteindre — la même stratégie que la commande .recover de SQLite elle-même. Les enregistrements qui ne peuvent pas être rattachés à une table connue sont placés dans une table lost_and_found au lieu d'être écartés, de sorte qu'une ligne abîmée de moz_places ou moz_bookmarks est conservée plutôt que perdue. Si vous avez encore le fichier frère places.sqlite-wal, ajoutez-le dans l'emplacement optionnel : en mode WAL, les visites et les marque-pages les plus récents peuvent ne vivre que dans ce journal jusqu'au checkpoint, et ses frames validées sont superposées avant le balayage. Le résultat est un places.sqlite neuf et ouvrable que vous téléchargez — recopiez-le dans le profil avec Firefox fermé, ou ouvrez-le en lecture seule pour exporter marque-pages et historique.

Fournissez le fichier places.sqlite.corrupt si Firefox a déjà réinitialisé votre profil : c'est là que se trouve encore votre historique. Pour le localiser, ouvrez about:profiles et cliquez sur « Ouvrir le dossier » (dossier racine) du profil en cours d'utilisation, ou allez directement dans %APPDATA%\Mozilla\Firefox\Profiles\<nom> sous Windows, ~/Library/Application Support/Firefox/Profiles/<nom> sous macOS, ou ~/.mozilla/firefox/<nom> sous Linux. Copiez le fichier ailleurs avec Firefox entièrement fermé, pour que rien ne le verrouille.

Pourquoi cela ne doit pas être téléversé : places.sqlite est, littéralement, un journal complet de chaque page que vous avez visitée. C'est le fichier que vous voudriez le moins voir copié sur le serveur d'une entreprise de réparation « juste pour le réparer », sous des conditions de conservation que vous n'avez jamais lues. Ici, il est lu depuis votre disque et reconstruit dans l'onglet du navigateur — vous pouvez ouvrir le panneau Réseau et confirmer que 0 octet de la base de données ne quitte jamais votre machine.

Ce que cela peut et ne peut pas réparer

Peut réparer

  • "database disk image is malformed" dû à une page de 32 KiB endommagée ou à un pointeur d'arbre-B cassé, lorsque les pages feuilles contenant vos lignes survivent
  • L'historique que Firefox jette lors d'une réinitialisation : les lignes de moz_places et moz_historyvisits extraites directement du fichier, même après une restauration limitée aux marque-pages
  • Le fichier places.sqlite.corrupt que Firefox a renommé en réinitialisant votre profil
  • Un en-tête endommagé ("file is not a database") lorsque les pages situées derrière le magic de 16 octets de SQLite sont intactes
  • Des visites et marque-pages sans checkpoint depuis un fichier frère places.sqlite-wal fourni

Ne peut pas réparer

  • Des lignes physiquement écrasées ou tronquées à la fin du fichier : ces octets n'existent plus
  • Un places.sqlite que Firefox a déjà remplacé par une base de données neuve et vide (récupérez plutôt le fichier .corrupt renommé)
  • Reconstruire les favicons : ils résident dans un favicons.sqlite distinct ; récupérez ce fichier de son côté
  • Décompresser une sauvegarde de marque-pages .jsonlz4 : c'est une archive mozLz4, pas une base de données SQLite (importez-la depuis la Bibliothèque de Firefox elle-même)
  • Un fichier de 0 octet, ou un fichier qui n'est que du bruit à haute entropie d'un bout à l'autre (c'est d'abord un travail de récupération de données du périphérique de stockage)

Si une réparation échoue, nous vous expliquons pourquoi (données manquantes ou structure endommagée), et vous n'êtes jamais facturé pour une réparation échouée.

Questions fréquentes

Firefox a effacé mon historique mais conservé mes marque-pages — puis-je récupérer l'historique ?

Souvent oui, si vous avez encore le fichier d'origine. Face à une corruption, Firefox ne restaure que les marque-pages (depuis une sauvegarde .jsonlz4) et démarre une base de données neuve et vide ; votre historique dans moz_places et moz_historyvisits n'a jamais été sauvegardé. Mais il existe généralement encore à l'intérieur du places.sqlite.corrupt renommé — récupérer ce fichier en ressort ces lignes et reconstruit une base de données qui porte aussi l'historique, pas seulement l'arbre de marque-pages.

Où trouver places.sqlite ou le fichier .corrupt ?

Dans le dossier de votre profil Firefox. Ouvrez about:profiles et cliquez sur Ouvrir le dossier du profil en cours d'utilisation, ou regardez dans %APPDATA%\Mozilla\Firefox\Profiles\ (Windows), ~/Library/Application Support/Firefox/Profiles/ (macOS) ou ~/.mozilla/firefox/ (Linux). Copiez le fichier ailleurs avec Firefox fermé ; si Firefox a déjà réinitialisé le profil, prenez places.sqlite.corrupt plutôt que le fichier actif vide.

Que signifie réellement "database disk image is malformed" ?

C'est le SQLITE_CORRUPT de SQLite, code de résultat 11 : le moteur a suivi un pointeur et est tombé sur quelque chose qui n'est pas une page valide — une page mise à zéro, un décalage de cellule incorrect, ou un nombre de pages qui ne concorde pas avec la taille du fichier. Il s'arrête à la première incohérence, mais les pages qu'il n'a jamais atteintes sont généralement intactes, et c'est précisément pour cela qu'une reconstruction page par page récupère vos lignes.

Ai-je besoin des fichiers -wal et -shm ?

Le fichier places.sqlite-shm n'est qu'un index en mémoire partagée et peut être ignoré. Le fichier places.sqlite-wal, lui, vaut la peine d'être conservé : en mode WAL, Firefox y place les changements récents jusqu'à ce qu'un checkpoint les écrive dans la base de données principale, si bien que vos visites et marque-pages les plus récents peuvent ne vivre que dans ce journal. Ajoutez-le dans l'emplacement optionnel de fichier frère et ses frames validées sont superposées avant le balayage.

Mon historique de navigation est-il téléversé pour être réparé ?

Non. places.sqlite est lu depuis votre disque et reconstruit dans l'onglet de votre navigateur ; rien n'est transmis. Cela compte ici plus que presque partout ailleurs : ce seul fichier est un enregistrement complet de chaque page que vous avez visitée. Ouvrez l'onglet Réseau et confirmez que 0 octet ne quitte votre machine pendant que la récupération s'exécute.

Associés : Récupérer n'importe quelle base de données SQLite · Réparer un classeur Excel · Réparer un PDF · Vérifier la promesse de zéro téléversement