#mysql
#mysql
Вопрос:
У меня есть mysql
таблица под названием Sample. Я отредактировал файл /var/lib/mysql/Sample.MYI
с некоторыми значениями. Теперь проверьте пример запроса ТАБЛИЦЫ, который отображается как
Неверный файл ключа для таблицы ‘Sample’; попробуйте его восстановить
Чтобы исправить это, я попытался использовать следующую команду myisamchk -r Sample.MYI
. но результатом является «myisamchk:
ошибка: Получена ошибка 140 при попытке воссоздать файл индекса MyISAM-таблица
Sample.MYI
не исправлена из-за ошибок «.
Теперь как восстановить эту таблицу?
Ответ №1:
На всякий случай, если у вас нет резервной копии, нет исходного файла и вы не можете повторно загрузить его, вот несколько ссылок, которые могут вам помочь:
http://dev.mysql.com/doc/refman/5.0/en/myisam-repair.html
http://www.felipecruz.com/repair-mysql-database.php (смотрите также ссылки внизу этой страницы)
http://forums.mysql.com/read.php?21,362974,362974
Следующая команда воссоздаст файлы .myi с нуля:
REPAIR TABLE tablename USE_FRM
Будьте осторожны с этим, хотя, эта страница:http://dev.mysql.com/doc/refman/5.5/en/repair-table.html говорит:
Используйте опцию USE_FRM, только если вы не можете использовать обычные режимы ВОССТАНОВЛЕНИЯ! Указание серверу игнорировать .Файл MYI создает важные метаданные таблицы, хранящиеся в .MYI недоступен для процесса восстановления, что может иметь пагубные последствия:[…..]
И, наконец, как переделать это разными способами:
Комментарии:
1. @ssbecse, по какой ссылке вы пробовали и какое решение у вас сработало?
2. felipecruz.com/repair-mysql-database.php и dev.mysql.com/doc/refman/5.0/en/myisam-repair.html . В них есть опция под названием «ВОССТАНОВИТЬ ТАБЛИЦУ tablename USE_FRM;» . она работает нормально
3. @ssbecse, классный MySQL на самом деле ничего не восстанавливает, он просто воссоздает файлы .myi с нуля. Не стесняйтесь принять ответ, если он решил вашу проблему :-).
4. @ssbecse, восстановление всегда сопряжено с опасностью потери данных, потому что MySQL приходится угадывать, какие данные могли находиться в том месте, где сейчас находятся поврежденные данные. Если это предположение неверно, оно может просто ввести совершенно неправильные данные. Например. предположим, MySQL сообщает, что ваши файлы .myi неверны, но на самом деле это неправда, и ваш .myi в порядке, но ваш файл данных поврежден. Тогда MySQL может воссоздать файл .myi и перезаписать исправный файл на основе поврежденного файла данных. Не беспокойтесь, всегда сначала делайте резервную копию. Попробуйте и посмотрите, работает ли это, не восстанавливается ли из резервной копии и попробуйте что-нибудь еще.
5. В моем приложении периодически обновляются данные в таблице MySQL. как сделать резервную копию, чтобы таблицы были повреждены.
Ответ №2:
Проверьте состояние поврежденной таблицы
check table tablename;
например
mysql> check table realtime_clicks_update;
-------------------------------- ------- ---------- ----------
| Table | Op | Msg_type | Msg_text |
-------------------------------- ------- ---------- ----------
| logdata.realtime_clicks_update | check | status | OK |
-------------------------------- ------- ---------- ----------
Если статус не в порядке, восстановите его с помощью следующей команды
mysql> repair table tablename;
Ответ №3:
Почему вы отредактировали .MYI
файл? Вы не должны этого делать.
Восстановите из резервных копий, затем повторно примените изменения надлежащим образом.
Ответ №4:
верните исходный образец.MYI-файл 🙂
Комментарии:
1. в моем приложении у меня есть отрицательный testing.ie если таблица повреждена, мой код должен позаботиться о восстановлении этой таблицы…
2. @ssbecse, это глупая идея. Для этого и существуют резервные копии. И, кроме того, формат .myi является движущейся целью, MySQL никогда не обещал, что они не изменят макет этого файла.
3. это сработает только тогда, когда базовая таблица вообще не изменилась, что не очень вероятный сценарий в рабочей среде.
4. Йохан, идея заключалась в том, чтобы использовать резервную копию, которая обычно не является самими файлами.