Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL - Correction d'erreur - Erreur de base de données WordPress Entrée en double pour la clé PRIMARY pour la requête INSERT INTO wp_options

Comme beaucoup d'entre vous le savent, ce blog fonctionne sur WordPress et sous le capot de WordPress, il y a une base de données MySQL. La base de données MySQL est assez bonne et est capable de contenir un trafic massif que ce blog reçoit chaque jour. Cependant, comme toute base de données, MySQL nécessite un réglage ainsi qu'une gestion appropriée de celle-ci. Dans cet article de blog, nous discuterons de la façon dont j'ai reçu une erreur très étrange Erreur de base de données WordPress et comment je l'ai résolue.

La semaine dernière, j'ai soudainement reçu un appel d'un ami me disant que notre blog se chargeait très lentement. Eh bien, lorsqu'un nouveau billet de blog est publié ou qu'une newsletter est envoyée, il est très courant de voir un pic de trafic et une lenteur momentanée des performances du site Web. Cependant, dans ce cas, le site Web était systématiquement lent. Après un certain temps, nous avons trouvé quelques nouveaux problèmes sur le site. En raison de la lenteur des performances, nous avons également découvert que le planificateur WordPress ne publiait pas de nouveaux articles de blog et n'effectuait pas de sauvegarde de routine du système.

Après un diagnostic minutieux, j'ai compris que le problème venait de la base de données MySQL. Lorsque j'ai vérifié le journal des erreurs, j'ai trouvé l'erreur suivante dans le journal.

[Fri Sep 09 04:58:03 2016] [error] [client] Erreur de base de données WordPress Entrée en double '3354142' pour la clé 'PRIMARY' pour la requête INSERT INTO wp_options (option_name , option_value,autoload) VALEURS (…)

Il était très clair qu'il y avait une violation de clé primaire dans la table des options. Cependant, le problème n'était pas facile à résoudre car je n'avais personnellement effectué aucune transaction avec cette table ou il n'y avait pas de nouvelle mise à jour ou de changement de plugin ces derniers temps. Ma première tentative a été de restaurer cette table particulière à partir d'une ancienne sauvegarde de base de données (je sauvegarde fréquemment mon site et sa base de données). Même ce problème particulier a échoué et je n'ai pas pu me débarrasser de l'erreur.

Enfin, j'ai cherché sur Internet mais hélas, il n'y avait pas vraiment d'aide. À cette époque, j'ai décidé de faire divers essais et erreurs. Croyez-moi, je passe plus de 4 heures et différentes astuces pour me débarrasser de cette erreur. Il était très clair pour moi qu'il s'agissait d'une erreur d'intégrité logique sur la base de données, j'ai dû passer du temps avec beaucoup de tables et de logique. Eh bien, après 4 heures, j'ai finalement trouvé une solution et c'était une solution très simple. J'aurais aimé le savoir plus tôt et je n'aurais pas passé plus de 4 heures sur divers essais et erreurs.

Solution/Correction :

Je viens d'exécuter la commande suivante, mon problème a été résolu.

REPAIR TABLE wp_options

C'est tout ! C'était fait.

La réalité était que ma table était corrompue et pour la même raison, j'obtenais une erreur liée à la clé en double pour ma table de base de données. Une fois que j'ai corrigé la corruption de la table, tout a très bien fonctionné. N'oubliez pas que dans mon cas, c'était la table wp_options qui était corrompue, vous devez la remplacer par le nom de votre table et le script fonctionnera correctement.

De plus, si vous souhaitez simplement réparer toutes les tables de votre base de données, vous pouvez exécuter le script suivant et il générera des scripts pour chaque table de votre base de données MySQL. Une fois le script exécuté, vous réparerez chaque table de votre base de données.

SELECT CONCAT('repair table ', table_name, ';') 
FROM information_schema.tables 
WHERE table_schema='YourDatabaseName';

J'espère que vous trouverez cet article de blog utile. Si jamais vous rencontrez un problème avec la base de données WordPress MySQL, contactez-moi, je serai heureux de vous aider à résoudre toute erreur liée à la même chose.