Сломалась таблица «mysql table crashed» или закончилось место на диске?
В один прекрасный солнечный день, администратор заходит на свой сайт, и видит на экране ошибку mysql table is marked as crashed and should be repaired. Вчера всё было хорошо, но сегодня возникает ошибка, и сайт не работает.
Что делать?
В первую очередь не стоит паниковать, особенно если у вас есть бекап таблицы или базы данных.
Во-вторых обязательно проверьте дисковое пространство на хостинге, очень часто данная ошибка возникает из-за недостатка места на жёстком диске. Нужно очистить www логи в панели управления IspManager, или DirectAdmin, либо написать своему хостеру.
Восстановление таблицы в PhpMyadmin
Если же таблица всё-таки рухнула, её можно восстановить с помощью phpMyadmin. Для этого мы запускаем скрипт PhpMyadmin, выбираем галкой слетевшую таблицу, а затем в колонке «С отмеченными» выбираем «Восстановить таблицу».
Если нет доступа к phpmyadmin, но есть доступ к консоли, достаточно выполнить запрос
REPAIR TABLE `table_name`
Где table_name — «упавшая» таблица.
Восстановление таблицы из консоли
В консоли нам нужно соединиться с mysql, выбрать бд для работы, и восстановить таблицу:
- mysql -u user -p password
- use название бд
- repair table название таблицы
user — пользователь Mysql сервера
password — пароль Mysql сервера
Название БД — название базы данных где «упала» таблица
Название таблицы— таблица которая упала
Если восстановить таблицу не получается, и место на жёстком диске достаточно, тот тут поможет только восстановление самой базы данных, или одной из таблиц.
Но прежде чем её восстанавливать, посмотрите когда именно вы делали экспорт (резервную копию), чтобы не восстановить старую БД.
Восстановление БД на хостинге
На хостинге Beget, и Reg.ru есть специальная функция восстановления файлов и БД за предыдущий день. Два этих хостера создают резервную копию автоматически, при этом они хранятся не на диске клиента, а на их сервере.
Как восстановить БД на reg.ru, и восстановить бд на хостинге beget, я писал в отдельных темах, чтобы сильно не загрузить эту сатью.
Как восстановить отдельную таблицу
Предположим, что у нас есть бекап базы данных в sql формате, и у нас полетела таблица «setdo_menu». Файл в формате sql, нужно открыть с помощью редактора (например Notepad++), и найти строчки, отвечающие за создание таблицы «setdo_menu».
Create table отвечает за создание таблицы.
Insert into за вставку строк в таблицу
Теперь копируем поочерёдно два этих запроса, и вставляем в окошко «SQL» в программе phpmyadmin.
Прежде чем выполнить sql запрос, предыдущую «сломанную» таблицу нужно удалить, иначе sql запрос будет выполнен, но никаких изменений в таблице не будет, либо выскочит ошибка.
Как восстановить таблицы БД из файла
Если у вас на руках есть свежая бд, то её довольно просто восстановить с помощью phpmyadmin. Для этого заходим на вкладку «Импорт», с помощью кнопки «Обзор» выбираем sql файл на жёстком диске компьютера, и жмём кнопку «ОК»
Перед восстановлением таблиц в базе данных, старые таблицы нужно удалить.