Очистить можно через phpMyAdmin или SQL запросом:
1
|
truncate table TableName |
Чуть позднее для эксперимента решил поломать целую базу, взял другую большую таблицу вообще от другого приложения, размером около 8 гигабайт и 80 млн. строк.
Выполнил к ней SQL запрос на очистку старых строк до указанной в запросе даты и перезагрузил в этот момент MySQL, запрос прервался, база осталась цела, выполнил запрос на оптимизацию базы и еще раз перезагрузил MySQL, в итоге получил поврежденную базу и аналогичную ошибку:
#144 — Table ‘name’ is marked as crashed and last (automatic?) repair failed
Чтобы восстановить базу необходимо остановить MySQL сервер (если таблица ничем не используется, то можно не останавливать):
1
|
sudo service mysql stop |
Перейдем в директорию с базой:
1
|
cd /var/lib/mysql/$DATABASE_NAME |
Выполним команду восстановления указанной таблицы:
1
|
myisamchk -r -o -f -v $TABLE_NAME |
По завершению если останавливали MySQL сервер, то запустим его:
1
|
sudo service mysql start |
Источник https://ixnfo.com/reshenie-oshibki-table-name-is-marked-as-crashed-and-last-automatic-repair-failed.html