11/15/21 Franck Bugnet Tuto Vidéo

Réparation base de données PrestaShop

Toutes les données d'une boutique PrestaShop sont stockées dans une base de données relationnelle MySQL. Il s'agit d'un ensemble de fichiers organisés en tables, dans lesquelles est enregistré le contenu du site d'une manière très organisée. Le mot "relationnelle" signifie que certaines tables sont reliées entre elles par des clés (par exemple un identifiant), simples ou composées.

Ce type de structure est très fréquent, très puissant, rapide,... mais aussi complexe et très fragile. Il suffit parfois que l'une de ces relations soit cassée, suite à une erreur d'écriture lors d'une mise à jour, un changement de thème ou un plantage du serveur (erreur 500), pour que divers bugs apparaissent aussi bien en front qu'en back office, voir que plus rien ne fonctionne correctement ou que ne s'affiche plus que des pages blanches.

Or le meilleur moyen de perdre des clients, c'est de proposer un site pleins de problèmes ou d'erreurs. Cela ne donne pas confiance par exemple dans la sécurité de vos moyens de paiement. Vous risquez de collecter des avis ou commentaires négatifs sur votre manque de sérieux.

Google non plus n'aime pas les pages contenant des messages d'erreur, donc maintenir son site web en bonne santé est essentiel pour conserver chaque client, et pourtant PrestaShop n'intègre aucun outil de réparation de BDD, hormis la possibilité de la sauvegarder et de la restaurer (au sens de "la réinstaller à l'identique").

Mettre le prix sur un hébergement de qualité et optimiser la configuration ne suffit pas à garantir la stabilité d'un site. La seule solution pour la plupart des commerçants, faire appel à un prestataire qualifié pour réparer PrestaShop, coute souvent très cher, car cela requière une vraie expertise. Attention ici encore au marchands de vent.

Il existe heureusement une autre solution quasi gratuite, utiliser l'outil de réparation PrestaShop inclus nativement dans Merlin Backoffice (fait partie de la fonction "Gestion des catégories"). Comme vous allez le découvrir ci-dessous, c'est très simple d'utilisation, personnailsable et redoutablement efficace, même pour ceux qui ne s'y connaissent pas du tout en MySQL et PHP.

Merlin Backoffice regorge d'outils divers pour réparer PrestaShop. On pense par exemple aux fonctions de recherche et de nettoyage des doublons, aux boutons de reconstruction automatique des urls simplifiées, au script de ré-indexation ou encore à sa capacité à chercher et nettoyer les images orphelines, etc.

Mais en plus de toutes ces fonctionnalités, nous avons choisi de regrouper sous une même interface, un ensemble de codes de réparation de la base elle-même, pour que d'un clic vous puissiez corriger tous les défauts majeurs les plus courants, comme par exemple la structure de l'arborescence des catégories, aussi appelé fil d'Ariane, ou encore la correction des orphelins, des associations incomplètes et des problèmes complexes lié au multi boutiques.

Cet article est scindé en deux parties : une vidéo de démonstration du module de réparation très détaillée et une seconde partie pour les plus pressés d'entre-vous expliquant comment choisir entre les diverses options disponibles.

Réparation base de données PrestaShop, le tutoriel vidéo



L'outil de réparation des bases de données de Merlin Backoffice. est un puissant outil ayant sauvé déjà bien des boutiques victimes de crash de PrestaShop. Réparation de l'absence ou doublons de catégorie root, réparation des niveaux, réparation du fil d'Ariane, réparation des catégories et produits orphelin(es), réparation des associations entre boutiques, catégories, réparation des séries de positions, réparation des traductions manquantes, mode de lecture progressif des catégories, id nul ou non existant, parents mal définis, réparation automatique au lancement, cohérence des sous catégories...

39min



Module de réparation de la BDD PrestaShop, toutes les fonctionnalitées expliquées


Ouvrir la fenêtre de réparation


Inutile de savoir écrire la moindre ligne de code PHP ou requêtes MySQL, il suffit de cocher les options souhaité, c'est le module de réparation qui fait le nettoyage.

Il se lance depuis la panneau de contrôle de Merlin, dans l'onglet ou tiroir "Import et scripts". Cliquez sur le bouton "Réparation base de données".

Module de réparation de base de données PrestaShop

Comme indiqué en orange, il est recommandé par prudence de toujours faire une sauvegarde de la BDD avant de lancer un script de réparation automatique, quelque soit la méthode ou outil utilisé.


La catégorie ROOT, invisible dans PrestaShop mais tellement essentielle


La plupart des fonctions de réparation ci-dessous ont besoin de savoir quelle est la catégorie root (ou racine) de PrestaShop.

Cette catégorie n'existe qu'à partir des versions 1.5 de PrestaShop et est obligatoire. Sur un site web vierge elle est automatiquement créée à l'installation et porte le numéro 1.
Mais il arrive qu'elle soit supprimée par erreur et recréée sous un autre numéro.
Les boutiques internet migrées depuis d'anciennes versions de PrestaShop utilisent déjà le numéro 1 pour leur catégorie "Accueil". Dans ce cas, Root est créée avec un autre numéro ou est parfois manquante.

Ce qui caractérise la catégorie root :


  • Elle n'a pas de catégorie parente (id_parent = 0)
  • Est est tout en haut de la structure, donc son niveau est égal à 0
  • Sa valeur de nleft est égal à 1.
  • Toutes les catégories du site sont des enfants ou petits enfants de Root. C'est pour cela que la valeur nright de la catégorie root est nécessairement plus grande que la valeur nright de toutes les autres catégories.
  • Une BDD PrestaShop en bonne santé ne doit contenir qu'une et une seule catégorie de ce type.
  • La catégorie root n'est ni visible ni modifiable, ni réparable depuis le backoffice de PS.

Merlin Backoffice à tenté d'identifier pour vous cette catégorie. vérifiez qu'il ne se trompe pas avant d'aller plus loin. Si vous avez un doute, consultez l'arbre des catégories, à la recherche de la catégorie dont l'id_parent est égal à 0 et et nleft égal à 1 et qui en théorie contient toutes les autres.
Si les informations concernant cette catégorie racine sont erronées (par exemple sa valeur de nright), indiquez malgré tout son identifiant dans le 1er champ et cocher la seconde option de réparation ci-dessous.

Supprimer dans toutes les tables gérant les catégories, les lignes avec id_category nul ou égal à 0


Toute catégorie valide à un identifiant (id) non nul. Les lignes dont l'id est égal à zéro ou vide sont des incohérences et seront supprimées.
Les tables nettoyées sont : category, category_lang_category_shop, category_product, category_group.

Réparer voir créer la catégorie Root (Racine) si n'existe pas ou à été supprimée (en utilisant l'id ci dessus)


Cette action va donner à la catégorie que vous avez choisi ci-dessus, les bonnes valeurs de id_parent (0), niveau (0), nleft (1) et nright (la plus grande des valeurs+1) pour qu'elle devienne la catégorie root du site, et contienne donc l'ensemble des autres catégories.

Corriger les doublons de catégorie Root  (id_parent=0 and nleft=1)


Il peut arriver que la liste des catégories contienne plusieurs catégories répondant aux critères définissant la catégorie "Racine" ou "Root" (id_parent=0, level=0  et nleft=1). Or PrestaShop ne peut fonctionner qu'avec une seule catégorie de ce type.

Cette option, si cochée, permet de ne conserver qu'une seule catégorie racine (celle indiquée dasn le premier champ). Les autres étant conservées mais transformées en sous catégories de la catégorie racine.

Réparer les catégories orphelines (sans catégorie mère définie ou existante)


Permet de rattacher à l'arborescence les catégories qui n'ont pas de catégorie parente (id_parent = 0).
Vous pouvez soit les rattacher à la catégorie racine, soit à une autre catégorie au choix (entrez son numéro), soit encore faire confiance aux valeurs des colonnes nleft et nright (fils d'Ariane), pour retrouver la vraie catégorie parente et l'y attacher.

Pour les versions de Prestashop avant 1.4 : la troisième option est grisé. Et il est obligatoire de préciser vous même le numéro de la catégorie parente (il n'existe pas de catégorie "racine" ni de rubriques nleft et nright).

Réparer les niveaux (lorsque le niveau d'une sous catégorie est différent de celui de sa parente + 1).


Les valeurs "niveau" et "parent" doivent être cohérentes. Le niveau d'une catégorie devant toujours être égal à celle de sa catégorie parent plus un.

Cette option permet de recalculer toutes les valeurs "niveau" pour respecter cette contrainte.

Reconstruire les valeurs nleft et nright du fil d'Ariane ( LENT, mais toujours recommandé).


Les valeurs nleft et nright sont essentielles au bon fonctionnement de PrestaShop à partir de la version 1.4, et encore plus à Merlin Backoffice.

Leur calcul et fonctionnement est assez complexe, mais doit être effectué pour l'ensemble des catégories, dès que l'on en ajoute, supprime ou déplace une.

Merlin Backoffice effectue ce calcul de manière invisible, chaque fois que nécessaire. 

Si ces valeurs sont incorrectes pour une ou plusieurs catégories, elles seront soit manquantes soit mal affichées dans les arbres (au mauvais endroit) et toute opération de déplacement ou de clonage voué à l'échec.

Cette option, lorsque cochée, permet donc de manuellement relancer le calcul complet de ces valeurs.

Vérifier que les catégories sont bien associées à leur boutique par défaut, sinon les associer.


Chaque catégorie a une et une seule boutique par défaut déclarée. De plus elle doit toujours être associée à cette dernière.

Cette option permet donc de vérifier que chaque catégorie est bien associée à sa boutique par défaut et de corriger la ligne d'association si ce n'est pas le cas.

Vérifier que lorsqu'une catégorie est associée à une boutique, ses catégories parentes le sont aussi, sinon les associer.


Une catégorie peut être associée à plusieurs boutiques, mais elle ne doit l'être que si sa catégorie parent l'est également.

Cette option va donc pour chaque catégorie, vérifier que toutes ses parentes, jusqu'à la racine sont bien associées aux mêmes boutiques qu'elle et créer les associations manquantes.

Vérifier que lorsqu'une catégorie est associée à une boutique internet, elle possède bien un nom et une url réécrite...


Pour être correctement affichée dans l'arborescence, chaque catégorie doit posséder un nom pour chaque boutique associée, et cela pour chaque langue installée dans PrestaShop.

Cette option permet de donner un nom générique partout ou ils sont manquants.

De même, chaque page de catégorie doit obligatoirement posséder une URL simplifiée. Si elle est manquante Merlin va la reconstruire à partir du nom de la catégorie.

Supprimer les trous et les doublons dans l'ordre (positions) des catégories.


Les catégories enfants d'une catégorie sont ordonnées selon la valeur "position" attribuée à chacune d'elles (à partir de PS 1.4 uniquement).

Il peut arriver qu'il manque des valeurs dans ces séries (ex : 1,2,4,5). Bien que cela ne perturbe pas le fonctionnement de PrestaShop, cela peut le ralentir légèrement. Ce script supprime les trous (ex : 1,2,3,4). 

Selon les versions de PS, le compteur commence à 0 ou à 1.

Supprimer dans toutes les tables gérant les produits les lignes avec id_product nul ou égal à 0.

Tout produit valide à un identifiant (id) non nul. Les lignes dont l'id est égal à zéro ou vide sont des incohérences et seront supprimées.

Les tables nettoyées par Merlin sont la grande majorité de celles contenant id_product.

Réparer les orphelins (sans catégorie par défaut définie ou existante)


Un orphelin est un produit qui n'est rattaché à aucune catégorie. La plupart du temps il sera difficile voir impossible de les afficher dans PrestaShop et dans Merlin sans commencer par les réparer avec cet outil.

Cette option permet donc de rattacher à l'arborescence tous ceux qui n'ont pas de catégorie par défaut.

Vous pouvez soit les rattacher à la catégorie racine, soit à une autre catégorie au choix (entrez son numéro).

Vérifier que les produits ont bien une boutique par défaut et qu'ils y sont associés, sinon corriger.


Chaque article doit obligatoireent avoir une et une seule boutique par défaut et y être associé.

Si ce n'est pas le cas, le programme leur donnera celle de leur catégorie principale.

Cette option permet donc de vérifier également que chaque article est bien associé à sa boutique par défaut et de créer cette association si elle est manquante.

Cela permet de lister ceux qui peuvent rester invisibles si ils ne sont associés à aucune shop, afin de pouvoir les modifier, déplacer, supprimer etc.

Supprimer les lignes d'associations incorrectes.


Un produit peut être associé à de nombreuses catégories.

Lorsque qu'une catégorie est supprimée, les associations à ses produits associés doivent aussi être supprimées. De même, lorsqu'un produit est supprimé, ses associations doivent l'être aussi. Mais ces suppressions réalisées via le back office officile ou avec d'autres outils externes donnent parfois lieu à des nettoyages incomplets.

Cette option permet donc de supprimer dans la table des relation produits / catégories, tous les liens entre des catégories et des produits qui n'existent plus.

Vérifier que les produits sont bien associées à leur catégorie par défaut, sinon les associer.


Chaque produit doit posséder une et une seule catégorie dite principale ou par défaut.

De plus il devrait toujours être associée à cette dernière (bien que casser ces relations n'engendre apparament pas de dysfonctionnement et peut être voulu dans certains cas particuliers).

Cette option permet donc de vérifier que chaque article est bien associé à sa catégorie par défaut et d'ajouter la ligne d'association si elle est manquante.

Note : cette fonction est inactive pour les versions avant PS 1.4.7.0 pour une raison technique liée à la structure des tables.

Supprimer les trous et les doublons dans l'ordre (positions) des fiches.


Les produits associés à une catégorie sont ordonnés selon la valeur "position" attribuée à chacun d'eux.

Il peut arriver qu'il manque des valeurs dans ces séries (ex : 1,2,4,5). C'est sans conséquence sur le fonctionnement du site, mais ce n'est pas propre et peut causer des ralentissements.

Ce script supprime les trous (ex : 1,2,3,4). 

En fonction de la version de PS, le compteur position commence par 0 ou par 1.

Quelle méthode suivre, tout cocher et tout réparer ?


La solution de facilité et la plus rapide consiste en effet à cliquer sur la case "Tout cocher" afin d'activer l'ensemble des options et donc de réaliser un check up complet de la base.
Cela fonctionne bien et à notre connaissance n'a jamais mis en vrac le moindre site.
Cependant nous recommandons de plutôt de procéder par étapes et avec un peu de logique.

Si par exemple vous rencontrez des problèmes d'affichage de catégories ou de fil d'Ariane, il n'est pas forcément utile de réparer leur contenu.

Ne cocher que les options qui vous semblent pouvoir avoir un lien avec un bug ou dysfonctionnement rencontré, vous permet d'une part de vérifier votre hypothèse et donc d'améliorer votre propre expertise et compréhension de la structure et fonctionnement de la base PrestaShop.

Autres articles de la même catégorie Comment réparer et nettoyer PrestaShop

  • Doublons dans PrestaShop Tuto Vidéo
    Tutoriel montrant comment prévenir ou corriger tous les types de doublons dans PrestaShop. Doublons de produits, de déclinaisons, d'attributs, de caractéristiques ou de photos.
Cet article vous a plu ? Partagez-le !