Когда таблицы оказываются поврежденными или mysqld всегда дает сбой после некоторых команд, то можно провести испытания (если данный сбой воспроизводим). Для этого нужно выполнить следующие действия:
Остановите демон MySQL (с помощью команды mysqladmin shutdown).
Сделайте резервную копию таблиц (в качестве меры предосторожности на случай, если процесс исправления таблиц пройдет некорректно, хотя это и маловероятно).
Проверьте все таблицы с помощью команды myisamchk -s database/*.MYI. Исправьте некорректные таблицы с помощью команды myisamchk -r database/table.MYI.
Создайте еще раз резервные копии этих таблиц.
Переместите (или удалите совсем) все старые журнальные файлы из каталога данных MySQL, если нужно освободить больше места.
Запустите mysqld с --log-bin (see section 4.9.4 Бинарный журнал обновлений). Если вы хотите найти запрос, который приводит к сбою mysqld, то следует использовать --log --log-bin.
Когда таблица с искажениями будет получена, остановите сервер mysqld.
Восстановите систему из резервной копии.
Перезапустите сервер mysqld без --log-bin.
Выполните заново команды mysqlbinlog update-log-file | mysql. Обновленная запись в журнале сохраняется в каталоге баз данных MySQL с именем `hostname-bin.#'.
Если в результате вышеприведенной команды таблицы опять окажутся поврежденными или вы можете получить сбой в работе mysqld, то, значит, вы нашли повторяющуюся ошибку, которую можно исправить! Загрузите эти таблицы и запись из двоичного журнала по адресу ftp://support.mysql.com/pub/mysql/secret/ и пошлите письмо с описанием данной проблемы на bugs@lists.mysql.com или (если вы являетесь коммерческим пользователем) на support@mysql.com - и команда разработчиков MySQL устранит ошибку настолько быстро, насколько это возможно.
Для локализации проблемы можно также использовать скрипт mysql_find_rows, чтобы просто выполнить ряд обновляющих команд.