Comment corriger une clé primaire manquante dans la table WordPress wp_options

Parfois, dans certaines circonstances, wp_options (ou toute autre table) peut perdre son index de clé primaire.

La raison exacte de ce problème n’est pas claire à 100 %. Cela semble pouvoir se produire si la base de données a été migrée manuellement d’une base de données à une autre, ou en utilisant un Plugin ou un outil qui ne couvrait pas toutes les configurations, comme l’utilisation de différentes versions MySQL ou types comme InnoDB ou MyISAM.

Pour être clair : WP STAGING n’est pas la cause de cette erreur. Nous t’aidons seulement à détecter cette erreur en affichant un avertissement bien visible dans ton tableau de bord d’administration quand cela se produit :

Nous faisons cela parce que cette erreur est critique et très insidieuse. Tu ne la remarqueras pas jusqu’à ce qu’il soit trop tard pour la résoudre rapidement. Plus tu attends pour la corriger, plus il devient difficile de la résoudre.

C’est parce que ton site se comportera presque comme avant et ne fonctionnera différemment qu’en coulisses.

Voici un exemple rapide de pourquoi cela affecte la table wp_options :

La table wp_options a une colonne nommée option_id. Cet ID est généralement unique et ne peut être attribué qu’une seule fois à une ligne. L’ID est automatiquement incrémenté pour chaque ligne comme ceci :

option_id | option_name
1                     |  option1
2                     | option2
3                     | option3

Si la clé primaire est manquante, l’option_id n’est plus incrémenté et toutes les nouvelles lignes obtiendront le numéro option_id 0, comme ceci :

option_id | option_name
1                     |  option1
2                     | option2
3                     | option3
0                     | option4
0                     | option5
0                     | option6

Le problème apparaît lorsque tu essaies d’exporter et d’importer ces lignes dans une autre base de données. L’option_id doit être un numéro unique, donc des erreurs d’insertion SQL comme « Can not insert duplicate key … » s’afficheront et stopperont la migration.

Par conséquent, WP STAGING et tout autre Plugin de migration ne peuvent pas effectuer le transfert de données de la base de données vers une autre base de données. Par exemple, le processus de déploiement du site de staging vers le site de production échouera.

Cette capture d’écran montre une table wp_options ordinaire avec une clé primaire définie sur la colonne option_id :

Find out if the primary key index is missing in WordPress database table wp_options. Image with index

Cette deuxième capture d’écran montre la table wp_options sans clé primaire :

Find out if the table has a missing primary key index. Image with index missing

Remarque : Tu auras besoin d’un outil de gestion de base de données pour ce tutoriel, par exemple « adminer » ou PHPMyAdmin.

Renommer les option_id existants

  1. Sauvegarde ta base de données entière et télécharge-la.
  2. Modifie les valeurs d’option_id pour tous les ID dupliqués.
    Je te suggère de récupérer le plus grand numéro que tu as dans la colonne option_id et de l’incrémenter un par un. Ce screencast te montre comment procéder :

Ajouter l’index de clé primaire et modifier la table

  1. Ouvre phpmyadmin ou adminer et navigue vers la table wp_options.
  2. Clique sur « Modifier les indexes » comme dans cette capture d’écran :
  3. Ensuite, définis « option_id » comme clé primaire :
  4. Si tu obtiens l’erreur « Duplicate entry ‘0’ for key PRIMARY », cela signifie qu’il y a encore des ID dupliqués dans la table et que tu n’en as pas modifié tous :
  5. Dans ce cas, trouve les valeurs restantes et incrémente-les de sorte qu’il n’y ait plus de doublons dans la table. Après cela, tu peux recommencer à ajouter la CLÉ PRIMAIRE à la table.

Après avoir corrigé la clé primaire manquante, tu es prêt à déployer le site de staging vers le site live ; il est cependant recommandé de sauvegarder la base de données.

Updated on mai 23, 2026

Alaa Salama

Auteur : Alaa Salama

Je travaille dans le support depuis plus de dix ans, car j’apprécie vraiment le côté humain de la technologie. Qu’il s’agisse de résoudre un problème WordPress complexe ou de développer des plugins personnalisés et des extraits de code pour simplifier les flux de travail, mon objectif est toujours de réduire les frictions et d’aider les personnes à travailler plus intelligemment. Pour moi, il n’y a rien de plus gratifiant que de voir une solution que j’ai créée améliorer la journée de quelqu’un.

Lorsque je suis hors ligne, je suis généralement encore “sous le capot” de quelque chose. Je suis passionné par l’optimisation des serveurs et l’électronique DIY, et je consacre souvent mon temps libre à des projets de maison connectée et à des réparations matérielles. J’accorde une valeur particulière au temps passé dans mon atelier à la maison avec mes enfants. Ensemble, nous nous attaquons à tout, des réparations domestiques aux projets créatifs, en cultivant le plaisir de construire des choses faites pour durer.