При запуске сервера MySQL
#service mysql start
[ ok ] Starting MySQL database server: mysqld ..
[info] Checking for tables which need an upgrade, are corrupt or were
not closed cleanly..
Необходимо проверить таблицы, которые были закрыты не корректно и нуждаются в обновлении.
mysql_upgrade --force -u root -p
этой функцией нужно пользоваться при обновлении базы данных MySQL
mysqlcheck --check-upgrade --all-databases --auto-repair -u root -p
Функция mysqlcheck это упрощенная версия myisamchk. Подходит для всех типов хранилища. mysqlcheck нужно запускать при запущенном сервере MySQL. mysqlcheck включает в себя CHECK TABLE, REPAIR TABLE, ANALYZE TABLE, OPTIMIZE TABLE.
—auto-repair — если таблица повреждена автоматически исправляет ее
Для хранилища типа MyISAM используется специальная команда:
myisamchk --recover <path to *.myi>
myisamchk нужно запускать при остановленном сервере MySQL.
myisamchk --safe-recover <path to *.myi>
По-умолчанию служебная таблица mysql создается с типом MyISAM. В Ubuntu эта таблица хранится в директории /var/lib/mysql/mysql/
При остановленном сервере запускаем:
myisamchk --safe-recover /var/lib/mysql/mysql/*.MYI
Запускаем сервер MySQL
# service mysql start
[ ok ] Starting MySQL database server: mysqld already running.
Но было так что все таблички [OK], но сообщение о чеке остаются. Поэтому помогла (вторая) строка (естественно опять же останавливая сервер.)
myisamchk /var/lib/mysql/*/*.MYI
myisamchk -e -r --correct-checksum -n - S /var/lib/mysql/*/*.MYI