2014-01-17 5 views
1

У нас есть веб-сайт с таблицей ставок налога, которая как-то однажды испортилась.Таблица MySQL повреждена

Я попытался выбрать * из таблицы, но буквально потребовалось несколько часов, чтобы ничего не дать.

Я пробовал усекать и опускать стол. Произвели те же результаты, что и выбор. В конце концов действия прекратились. Итак, я побежал

myisamchk -r theTable.MYI 

Исправленные выглядит, как он пошел хорошо, но я попытался выбрать * из него снова и до сих пор производит те же самые результаты.

Двигатель MySQL

Было бы легко воспроизвести таблицу, можно просто удалить таблицы, с. * (FRM, Myd, Myi)?

Или, если есть лучший подход к тому, что я делаю.

ответ

1

Да, вы можете удалить файлы .FRM, .MYD, .MYI, чтобы удалить таблицу MyISAM. Это то, что происходит, когда вы DROP TABLE.

Таблицы MyISAM являются пресловутыми для получения коррумпированных данных. Но тот факт, что у вас возникли неоднократные проблемы после воссоздания таблицы, заставляет задуматься, есть ли у вас неудачный жесткий диск. Это будет стоить testing the health of your hard drive.

Вы также должны переключиться на использование InnoDB вместо MyISAM. В InnoDB много защиты от коррупции, включая контрольные суммы страниц, синхронные записи на диск, восстановление после сбоев и т. Д. MyISAM постепенно прекращается и не получает никаких исправлений от разработчиков MySQL. В настоящее время InnoDB является механизмом хранения по умолчанию с MySQL 5.5 (около 2010 года), и он будет по-прежнему оставаться в центре внимания будущего развития.

Обратите внимание, что с помощью InnoDB вы не можете просто удалите файлы, чтобы добиться удаления таблицы, как вы могли, с помощью MyISAM. Вы должны использовать DROP TABLE, поэтому InnoDB синхронизирует это падение со своим внутренним словарем данных.

Смежные вопросы