Jak wielu z was wie, że ten blog działa na WordPressie, a pod maską WordPressa znajduje się baza danych MySQL. Baza danych MySQL jest całkiem dobra i jest w stanie utrzymać ogromny ruch, który ten blog otrzymuje każdego dnia. Jednak, jak każda baza danych, MySQL wymaga dostrojenia, a także odpowiedniego zarządzania nią. W tym poście na blogu omówimy, w jaki sposób otrzymałem bardzo dziwny błąd Błąd bazy danych WordPress i jak go rozwiązałem.
W zeszłym tygodniu nagle otrzymałem telefon od znajomego, że nasz blog ładuje się bardzo wolno. Cóż, gdy publikowany jest nowy post na blogu lub wysyłany jest biuletyn, bardzo często obserwuje się gwałtowny wzrost ruchu i chwilowe spowolnienie działania witryny. Jednak w tym przypadku witryna stale działała wolno. Po chwili znaleźliśmy na stronie kilka nowych problemów. Ze względu na niską wydajność odkryliśmy również, że harmonogram WordPress nie publikował nowych postów na blogu, a także nie wykonywał rutynowych kopii zapasowych systemu.
Po dokładnej diagnostyce stwierdziłem, że problem dotyczy bazy danych MySQL. Kiedy sprawdziłem dziennik błędów, znalazłem w nim następujący błąd.
[Pt 09 września 04:58:03 2016] [błąd] [klient] Błąd bazy danych WordPress Zduplikowany wpis „3354142” dla klucza „PRIMARY” dla zapytania INSERT INTO wp_options (nazwa_opcji , wartość_opcji,automatyczne ładowanie) WARTOŚCI (…)
Bardzo jasne było, że doszło do naruszenia klucza podstawowego w tabeli opcji. Jednak problem nie był łatwy do rozwiązania, ponieważ osobiście nie dokonywałem żadnych transakcji z tą tabelą lub w ostatnim czasie nie było nowych aktualizacji ani zmian wtyczek. Moją pierwszą próbą było przywrócenie tej konkretnej tabeli ze starszej kopii zapasowej bazy danych (często robię kopię zapasową mojej witryny i jej bazy danych). Nawet ten konkretny problem nie powiódł się i nie byłem w stanie pozbyć się błędu.
Wreszcie przeszukałem internet, ale niestety nie znalazłem prawdziwej pomocy. W tym czasie zdecydowałem się na różne próby i błędy. Zaufaj mi, spędzam ponad 4 godziny i różne różne sztuczki, aby pozbyć się tego błędu. Było dla mnie bardzo jasne, że był to błąd spójności logicznej w bazie danych, musiałem spędzić czas z dużą ilością tabel i logiki. Cóż, po 4 godzinach w końcu znalazłem rozwiązanie i było to bardzo proste rozwiązanie. Szkoda, że nie wiedziałem o tym wcześniej i nie spędziłbym ponad 4 godzin na różnych próbach i błędach.
Rozwiązanie / Poprawka:
Właśnie uruchomiłem następujące polecenie, gdy mój problem został rozwiązany.
REPAIR TABLE wp_options
To wszystko! Udało się.
W rzeczywistości moja tabela była uszkodzona i z tego samego powodu otrzymywałem błąd związany z duplikatem klucza dla mojej tabeli bazy danych. Kiedy naprawiłem uszkodzenie tabeli, wszystko działało dobrze. Pamiętaj, że w moim przypadku uszkodzona była tabela wp_options, musisz ją zastąpić nazwą swojej tabeli, a skrypt będzie działał dobrze.
Dodatkowo, jeśli chcesz po prostu naprawić wszystkie tabele w Twojej bazie danych, możesz wykonać następujący skrypt, który wygeneruje skrypty dla każdej tabeli w Twojej bazie danych MySQL. Po wykonaniu skryptu naprawisz każdą tabelę w swojej bazie danych.
SELECT CONCAT('repair table ', table_name, ';') FROM information_schema.tables WHERE table_schema='YourDatabaseName';
Mam nadzieję, że ten post na blogu okaże się przydatny. Jeśli kiedykolwiek będziesz miał jakiś problem z bazą danych MySQL WordPress, skontaktuj się ze mną, z przyjemnością pomogę Ci rozwiązać wszelkie związane z tym błędy.