Создание сайтов
Создание, поддержка и монетизация веб-сайтов.
На форуме появилась внезапно ошибка, что таблица постов сломана и восстановить ее не удалось: "Table ‘…’ is marked as crashed and last (automatic?) repair failed".
Восстановление штатными средствами, т.е. через программы HeidiSQL с командой repair table и стандартный mysqlcheck по SSH не помогло.

Зато помогло решение, описанное на сайте http://www.rebelcode.ru:

Эта простенькая инструкция расскажет как восстановить MySQL таблицу формата MyISAM, при ошибке:

Table 'crashed-table' is marked as crashed and last (automatic?) repair failed

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

Путь к файлам базы данных может быть разным, в зависимости от настроек сервера и установленной ОС, но как правило он такой, его и возьмём для примера:

cd /var/lib/mysql/

В этой директории находятся подпапки с именами баз данных, нужно выбрать ту, в которой находится неисправная таблица:

cd ./need-database

Внутри находятся файлы таблиц, здесь и запустим утилиту проверки таблицы с ключом -r (восстановление):

myisamchk -r crashed-table

Результатом работы утилиты может быть следующий лог:

- recovering (with sort) MyISAM-table 'crashed-table'
Data records: 0
- Fixing index 1
- Fixing index 2
- Fixing index 3
- Fixing index 4
- Fixing index 5
- Fixing index 6
Data records: 128

Иногда полезно использование режимов —verbose и —force:

myisamchk -r -v -f crashed-table

Если есть возможность, перед использованием утилиты myisamchk, следует остановить MySQL сервер, и запустить его после восстановления таблиц. Ниже указана полная последовательность действий:

/etc/init.d/mysql stop
myisamchk -r -v -f /var/lib/mysql/need-database/crashed-table
/etc/init.d/mysql start

Полный список возможностей утилиты myisamchk можно просмотреть во встроенной документации:

myisamchk --help

Реклама на сайте