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

Дата публикации:Апрель 27, 2014

Иногда таблица 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

Поделиться

8 комментариев

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

    • Дмитрий Алёшин says:

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

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

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

  4. Александр says:

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

    • Дмитрий Алёшин says:

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

  5. Александр says:

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

  6. Александр says:

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

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.