Както много от вас знаят, че този блог работи на WordPress и под капака на WordPress има MySQL база данни. MySQL базата данни е доста добра и е в състояние да задържи огромен трафик, който този блог получава всеки ден. Въпреки това, както всяка база данни, MySQL се нуждае от настройка, както и от правилно управление на същата. В тази публикация в блога ще обсъдим как получих много странна грешка Грешка в базата данни на WordPress и как я разреших.
Миналата седмица изведнъж ми се обади приятел, че блогът ни се зарежда много бавно. Е, когато се публикува нова публикация в блога или се изпраща бюлетин, много често се наблюдава скок в трафика и моментно забавяне на производителността на уебсайта. В този случай обаче уебсайтът постоянно работеше бавно. След известно време открихме няколко нови проблема в сайта. Поради бавната производителност, ние също така разбрахме, че планировщикът на WordPress не публикува нови публикации в блога, както и не прави рутинно резервно копие на системата.
След внимателна диагностика разбрах, че проблемът е в MySQL Database. Когато проверих регистъра на грешките, открих следната грешка в регистъра.
[Пт, 09 септември 04:58:03 2016] [грешка] [клиент] Грешка в базата данни на WordPress Дублиран запис „3354142“ за ключ „PRIMARY“ за заявка INSERT INTO wp_options (име_на_опция , option_value,autoload) СТОЙНОСТИ (…)
Беше много ясно, че има нарушение на първичния ключ в таблицата с опции. Проблемът обаче не беше лесен за решаване, тъй като аз лично не бях извършвал никакви транзакции с тази таблица или нямаше нова актуализация или промени в плъгините в последно време. Първият ми опит беше да възстановя тази конкретна таблица от по-старо архивно копие на базата данни (правя често архивиране на моя сайт и неговата база данни). Дори този конкретен проблем се провали и не успях да се отърва от грешката.
Накрая потърсих в интернет, но уви, нямаше реална помощ. По това време реших да правя различни опити и грешки. Повярвайте ми, прекарвам над 4 часа и различни различни трикове, за да се отърва от тази грешка. Беше ми много ясно, че това е грешка в логическата цялост в базата данни, трябваше да прекарам време с много таблици и логика. Е, след 4 часа най-накрая намерих решение и то беше много просто решение. Иска ми се да знаех това по-рано и да не съм прекарал повече от 4 часа в различни опити и грешки.
Решение / Поправка:
Току-що изпълних следната команда, че проблемът ми беше разрешен.
REPAIR TABLE wp_options
Това е! Беше направено.
Реалността беше, че моята таблица беше повредена и поради същата причина получавах грешка, свързана с дублиран ключ за моята таблица с база данни. След като поправих повредата на таблицата, всичко работеше добре. Не забравяйте, че в моя случай това беше таблицата wp_options, която беше повредена, трябва да я замените с името на вашата таблица и скриптът ще работи добре.
Освен това, ако искате просто да поправите всички таблици във вашата база данни, можете да изпълните следния скрипт и той ще генерира скриптове за всяка една таблица във вашата MySQL база данни. След като изпълните скрипта, ще поправите всяка една таблица от вашата база данни.
SELECT CONCAT('repair table ', table_name, ';') FROM information_schema.tables WHERE table_schema='YourDatabaseName';
Надявам се да намерите тази публикация в блога полезна. Ако някога имате някакъв проблем с базата данни WordPress MySQL, свържете се с мен, ще се радвам да ви помогна да разрешите всяка грешка, свързана със същото.