Как вы восстанавливаете после "неправильного файла ключа" с MySQL (InnoDB)?

Incorrect key file for table 'widgets'; try to repair it 

Это сообщение об ошибке, которое MySQL выдает мне при попытке применить новый индекс к существующей (очень большой) таблице. Конечно, когда я следую совету сообщения об ошибке, пытаясь исправить это:

mysql> repair table widgets;
+-------------------+--------+----------+---------------------------------------------------------+
| Table             | Op     | Msg_type | Msg_text                                                |
+-------------------+--------+----------+---------------------------------------------------------+
| tedsdb.widgets    | repair | note     | The storage engine for the table doesn't support repair | 
+-------------------+--------+----------+---------------------------------------------------------+
1 row in set (0.00 sec)

Какой мой лучший способ действий здесь (после очевидного полного резервного копирования, прежде чем возиться)?

ОБНОВЛЕНИЕ: я создал новую таблицу (MyISAM) той же схемы, скопировал все записи (вставить в select), изменил движок новой таблицы (InnoDB), переименовал поврежденную таблицу и переименовал новую таблицу, затем попытался снова и получил ту же ошибку.

3 ответа

Решение

Похоже, старый вопрос, но я только столкнулся с этой проблемой. MySQL записывал временную таблицу на диск, и раздел /tmp заполнялся.

Когда мы выполняем Alter на innodb, нужно соблюдать tmpdir. Ошибка 1034: Восстановление ключа определенно происходит из-за переполнения "tmpdir", и ваш alter выдаст эту ошибку.

Поэтому я предлагаю, чтобы при срабатывании Alter еще раз взглянул на ваше использование tmpdir. Если tmp использует 100%, вы наверняка увидите эту ошибку:).

Я настоятельно рекомендую сделать резервную копию, прежде чем пытаться это.

Выполнить манекен

ALTER TABLE widgets;
Другие вопросы по тегам