Как восстановить сломанную таблицу записей в базе данных WordPress

Иногда таблица wp_posts ломается, и тогда ваш сайт перестает нормально работать. Почему это происходит? Выяснить причину такой поломки получается не всегда – в некоторых случаях она связана с неожиданным событием, таким как ошибка MySQL-сервера или сервера выбранного вами хостинга в процессе обновления, что приводит к появлению обрывающихся записей в базе данных.

Симптомы сломанной таблицы записей

Если вы перейдете на экран «Все записи» или «Все страницы» в панели администратора WordPress и ничего там не увидите, то вы инстинктивно должны встревожиться. Что произошло с моим контентом? Не волнуйтесь, контент на месте. Зачастую такой синдром вызван сломанной таблицей записей в базе данных. Закатывать истерику не нужно, все поправимо.

Вы можете также видеть пустые страницы или ошибки 404 для существующих страниц, где должен был находиться контент. Если у вас имеется активный BuddyPress, то вы, возможно, увидите также следующее сообщение:

“The following active BuddyPress Components do not have associated WordPress Pages: User Groups, Members, Activate, Register. Repair”

Когда таблица записей ломается, BuddyPress не может найти все эти страницы, поэтому он и выдает предупреждение, даже если вы задавали указанные страницы ранее.

Как исправить сломанную таблицу

Иногда WordPress способен справиться с данной проблемой автоматически, но в остальное время вам понадобится сделать это вручную через phpMyAdmin. Прежде, чем что-то менять, убедитесь в том, что у вас имеется резервная копия базы данных.

Если вам не нравится работать с phpMyAdmin, то в таком случае вы должны сначала попробовать рекомендуемый метод восстановления базы данных в WordPress, который применим, начиная с версии 2.9. Добавьте следующий код к своему файлу wp-config.php:

define( 'WP_ALLOW_REPAIR', true );

Это должно автоматически привести к восстановлению сломанной таблицы после того, как вы посетите страницу {$your_site}/wp-admin/maint/repair.php

Если вы привыкли работать с phpMyAdmin, то в таком случае вы можете воспользоваться альтернативным методом восстановления, который в действительности делает то же самое, что и прошлый:

Заходим в панель управления своего хостинга и запускаем phpMyAdmin. Выбираем свою базу данных и ищем таблицу wp_posts. Скорее всего, она будет отличаться по своему виду от остальных таблиц, и скорее всего у нее будет написано «in use» («в использовании).

crashed-posts-table

Выбираем эту таблицу и щелкаем по «Repair Table» в выпадающем списке:

repair-table

В итоге все должно исправиться автоматически. Посетите свой сайт, чтобы проверить, действительно ли ваши записи и страницы вернулись в нормальный режим. Примечание: этот метод также работает и с другими сломанными таблицами — wp_options и т.д. Это достаточно простое решение указанной проблемы.

Источник: wptavern.com

Блог про WordPress
Комментарии: 12
  1. Денис Николаев

    Спасибо за инструкцию для восстановления базы данных. Остаёться один вопрос: что может привести к такой ситуации и как её можно избежать?

    1. Дмитрий (автор)

      Привести к такой ситуации могут различные сбои, избежать которых, увы, пользователи не в состоянии, поскольку эти сбои происходят на уровне сервера хостинга. Остается лишь выбирать стабильно работающие хостинги.

  2. Александр

    Дааааа… спасибо за пост)

  3. Игорь_Бут

    Отличный у вас сайт. Об описанных проблемах, к счастью, пока даже не слышал. Спасибо за статью, добавил в избранное.

  4. Александр

    Здравствуйте! Накосячил в phpmyadmin на локальном сервере, не имея бэкапов. Удалял черновики и сохраненные версии и как-то сделал так, что не отображается один из постов, который есть в бд, но не виден ни на главной, ни в админке :( Как отремонтировать, не подскажете?

    1. Дмитрий (автор)

      В phpMyAdmin в самом низу окна под списком таблиц есть раскрывающееся меню. В нем есть пункт Repair Table. Попробуйте его.

  5. Александр

    Запрос выполнен, но The storage engine for the table doesn’t support :(
    Это у меня на XAMMP

  6. Александр

    В итоге, ручками перебил пост, скопировав его с БД и вставив в редактор в админке. Но загадка осталась не разгаданной

  7. Maiolica

    Здравствуйте. спасибо за материал, но кажется он не решает проблему с исчезнувшем полем, и восстанавливает в уже существующем у меня исчезла таблица из базы данных отвечающая за плагин экспорта и при обращении к базе в запросе возникает ошибка, из-за несуществующей таблицы op57777_0.wp_pmxe_exports, в результате ошибка 500 и белый экран. /я хотела просто создать таблицу с таким именем, но хитрость не прокатила, пхп майадмин спросил сколько столбцов делать будем, на этом энтузиам стух. Подскажите пожалуйста, что то можно сделать в моем случае?

    1. Дмитрий (автор)

      Плагин WP All Export создает 4 таблицы:

      wp_pmxe_exports
      wp_pmxe_google_cats
      wp_pmxe_posts
      wp_pmxe_templates

      И он их не удаляет после своей деинсталляции. Они так и болтаются в базе данных.

      Я думаю, в вашем случае лучше переустановить плагин заново и попытаться вернуть те настройки, что были.

  8. Maiolica

    Дмитрий! Вы БОГ ворпресса! Очень жалею, что не нашла вас раньше и 2 месяца своей жизни потратила впустую. В результате непонятного стечения обстоятельств слетели поля из БД. Спасибо за точные названия полей, я вытащила из старой базы их и просто импортнула в существующую. Вы ОЧЕНЬ помогли. Плагин работает. Там и wp_pmxe_imports как оказалось слетел.. Но главное. что вы дали мне лопату и я закопала эту яму.

    1. Дмитрий (автор)

      Рад был помочь :)

Добавить комментарий для Maiolica Отменить ответ

Получать новые комментарии по электронной почте.