Как вы восстанавливаете после "неправильного файла ключа" с 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;