Назад | Перейти на главную страницу

Проблема MySQL: «Неверный ключевой файл для таблицы…»

Я пытаюсь перенести сервер mysql на новое оборудование. Старый сервер запускает mysql 4.1.12 на RHEL 4; новый сервер - mysql 5.1.41 на Ubuntu 10.04. У меня возникли странные проблемы при попытке перенести одну из баз данных. Я попытался использовать mysqldump, но файл не импортируется должным образом на новый сервер, потому что он жалуется на повторяющиеся ключи в определенной таблице, хотя я проверил и почти уверен, что на самом деле дубликатов ключей нет.

Поскольку я потратил несколько дней на борьбу с подходом mysqldump, не найдя решения, я решил вместо этого скопировать весь каталог / var / lib / mysql со старого сервера на новый. Казалось, что это работает хорошо, mysql запускается без жалоб и все данные, по-видимому, присутствуют. Однако веб-приложение, использующее одну из баз данных, не работает, жалуясь: «Неверный ключевой файл для таблицы« действия »; попробуйте исправить его, строка 194» (что интересно, таблица, с которой у меня возникают проблемы, НЕ та что mysqldump не удалось импортировать из-за повторяющихся ключевых ошибок, хотя они оба находятся в одной базе данных).

Я запустил REPAIR TABLE для этой таблицы из оболочки mysql, но он не работает с сообщением «Corrupt».

Я также попробовал myisamchk с флагами --recover и --safe-recovery для этой таблицы. В обоих случаях говорится, что исправлены ошибки, но веб-приложение по-прежнему жалуется на неправильный ключевой файл.

Больше всего меня смущает то, что (пока mysqld выключен) я запустил md5sum в файле MYI для рассматриваемой таблицы, и он идентичен как на старом, так и на новом сервере. Если файлы таблиц идентичны на двух машинах, я озадачен, почему ключевой файл неверен на одной, а на другой нет. Я почти подозреваю, что это ошибка mysql, но я не уверен.

Я был бы очень благодарен за любую помощь или предложения, так как у меня нет идей, как решить эту проблему. Я не гуру mysql, так что, возможно, мне не хватает чего-то очевидного.

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

Из документация по обновлению:

Если вы выполняете бинарное (на месте) обновление без дампа и перезагрузки таблиц, вы не сможете выполнить обновление напрямую с MySQL 4.1 до 5.1. Это происходит из-за несовместимого изменения формата индекса таблицы MyISAM в MySQL 5.0.

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