Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL – Fehler behoben – WordPress-Datenbankfehler Doppelter Eintrag für Schlüssel PRIMARY für Abfrage INSERT INTO wp_options

Wie viele von Ihnen wissen, läuft dieser Blog auf WordPress und unter der Haube von WordPress befindet sich eine MySQL-Datenbank. Die MySQL-Datenbank ist ziemlich gut und in der Lage, den massiven Datenverkehr zu bewältigen, den dieser Blog jeden Tag erhält. Wie jede Datenbank muss MySQL jedoch optimiert und ordnungsgemäß verwaltet werden. In diesem Blogbeitrag werden wir darüber diskutieren, wie ich einen sehr seltsamen Fehler in der WordPress-Datenbank erhalten habe und wie ich ihn gelöst habe.

Letzte Woche erhielt ich plötzlich einen Anruf von einem Freund, dass unser Blog sehr langsam lädt. Nun, wenn ein neuer Blogbeitrag veröffentlicht oder ein Newsletter verschickt wird, ist es sehr üblich, einen Anstieg des Datenverkehrs und eine vorübergehende Verlangsamung der Website-Leistung zu sehen. In diesem Fall wurde die Website jedoch durchweg langsam ausgeführt. Nach einer Weile fanden wir ein paar neue Probleme auf der Seite. Aufgrund der langsamen Leistung haben wir auch herausgefunden, dass der WordPress-Scheduler keine neuen Blog-Posts veröffentlicht und keine routinemäßige Sicherung des Systems durchführt.

Nach sorgfältiger Diagnose fand ich heraus, dass das Problem bei der MySQL-Datenbank lag. Als ich das Fehlerprotokoll überprüfte, fand ich den folgenden Fehler im Protokoll.

[Fr Sep 09 04:58:03 2016] [Fehler] [Client] WordPress-Datenbankfehler Doppelter Eintrag „3354142“ für Schlüssel „PRIMARY“ für Abfrage INSERT INTO wp_options (option_name , Optionswert, Autoload) WERTE (…)

Es war sehr klar, dass es eine Verletzung des Primärschlüssels in der Optionstabelle gab. Das Problem war jedoch nicht einfach zu lösen, da ich persönlich keine Transaktionen mit dieser Tabelle durchgeführt hatte oder es in letzter Zeit keine neuen Updates oder Plugin-Änderungen gab. Mein erster Versuch bestand darin, diese bestimmte Tabelle aus einer älteren Datenbanksicherung wiederherzustellen (ich erstelle häufig Sicherungskopien meiner Website und ihrer Datenbank). Sogar dieses spezielle Problem schlug fehl und ich konnte den Fehler nicht beseitigen.

Schließlich suchte ich im Internet, aber leider gab es keine wirkliche Hilfe. Damals entschied ich mich für verschiedene Trial-and-Error-Methoden. Vertrauen Sie mir, ich verbringe über 4 Stunden und verschiedene Tricks, um diesen Fehler zu beseitigen. Es war mir sehr klar, dass es sich um einen logischen Integritätsfehler in der Datenbank handelte, ich musste Zeit mit vielen Tabellen und Logik verbringen. Nun, nach 4 Stunden habe ich endlich eine Lösung gefunden, und es war eine sehr einfache Lösung. Ich wünschte, ich hätte das früher gewusst und hätte nicht über 4 Stunden mit verschiedenen Versuchen und Irrtümern verbracht.

Lösung/Korrektur:

Ich habe gerade den folgenden Befehl ausgeführt, damit mein Problem behoben wurde.

REPAIR TABLE wp_options

Das war's! Es war geschafft.

Die Realität war, dass meine Tabelle beschädigt war und aus dem gleichen Grund bekam ich einen Fehler im Zusammenhang mit Duplicate Key für meine Datenbanktabelle. Nachdem ich die Beschädigung der Tabelle behoben hatte, funktionierte alles einwandfrei. Denken Sie daran, dass in meinem Fall die wp_options-Tabelle beschädigt war. Sie müssen sie durch Ihren Tabellennamen ersetzen, und das Skript wird problemlos funktionieren.

Zusätzlich, wenn Sie nur alle Tabellen in Ihrer Datenbank reparieren möchten, können Sie das folgende Skript ausführen und es wird Skripte für jede einzelne Tabelle in Ihrer MySQL-Datenbank generieren. Sobald Sie das Skript ausführen, reparieren Sie jede einzelne Tabelle Ihrer Datenbank.

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

Ich hoffe, Sie finden diesen Blogbeitrag nützlich. Wenn Sie jemals ein Problem mit der WordPress-MySQL-Datenbank haben, wenden Sie sich an mich. Ich helfe Ihnen gerne bei der Behebung aller damit verbundenen Fehler.