Восстановление таблиц в базе MySQL
Если сайт перестал работать из-за сбоя соединения с базой данных, то стоит включить вывод ошибок и посмотреть на сообщение от MySQL.Чтобы сайт начал показывать ошибки на странице, необходимо в PHP код страницы, до места, где возникает ошибка, поставить строки:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
Тогда на странице сайта будет показываться описание ошибки.
Если сайт говорит, что у одной из таблиц в базе данных, которую он использует, есть нечитаемая со статусом "corrupted", то вполне возможно, что всё не так уж и плохо. Ведь повреждённую таблицу в базе данных можно восстановить. Повреждение таблицы может возникать в разных случаях, к примеру, во время пиковых нагрузок, когда к базе данных, когда приходит слишком много запросов.
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
Тогда на странице сайта будет показываться описание ошибки.
Для начала необходимо проверить статус таблицы. Для попробуйте выполнить SQL команду
CHECK TABLE имя_таблицы;
Если таблица в порядке, то результат выполнения будет такой:
+-------------+-------+----------+----------+ | Table | Op | Msg_type | Msg_text | +-------------+-------+----------+----------+ | имя_таблицы | check | status | OK | +-------------+-------+----------+----------+Если статус таблицы не "OK" а "corrupted" или какой-нибудь другой, который указывает на проблему, то необходимо восстановить таблицу. Делается это командой:
REPAIR TABLE имя_таблицы;
Этого хватает для починки 99% проблемных таблиц. Зачастую это таблицы типа MyISAM, которые не так надёжны, как InnoDB. Поэтому рекомендую перевести повредившиеся таблицы в тип InnoDB. Делается это с помощью SQL команды:
ALTER TABLE имя_таблицы ENGINE = INNODB;
К сожалению, InnoDB проигрывают по скорости в некоторых операциях MyISAM. Особенно если в таблице не много данных (не десятки гигабайт, а пара мегабайт). Но таблицы типа InnoDB надёжнее.