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

Mysql: ошибка Innodb при переносе mysql с linux на windows

Я перенес свой каталог данных для сервера mysql InnoDB с машины Linux на машину Windows. Я запустил сервер, выбрал базу данных и попытался запросить таблицу. Получена ошибка «Таблица не существует», однако она отображается в «Показать таблицы»; команда.

Я проверил свой журнал ошибок сервера и обнаружил:

"[ОШИБКА] Невозможно найти или открыть таблицу [dbname / tablename] из внутреннего словаря данных InnoDB, хотя файл .frm для таблицы существует. Словарь данных InnoDB, хотя файл .frm для таблицы существует. Возможно, вы удалили и воссоздали файлы данных InnoDB, но забыли удалить соответствующие файлы .frm таблиц InnoDB, или вы переместили файлы .frm в другую базу данных? или таблица содержит индексы, которые эта версия движка не поддерживает. См. http://dev.mysql.com/doc/refman/5.5/en/innodb-troubleshooting.html как вы можете решить эту проблему ».

Я считаю, что это может иметь какое-то отношение к регистру? Я пробовал установку lower_case_table_names на 0, 1 и 2 безуспешно.

У кого-нибудь есть идеи? Весьма признателен!

Вам нужно сделать mysqldump всего !!!

Что касается сообщения об ошибке, у вас есть то, что я называю «дырой в пиджаке». По сути, это метаданные таблицы, поврежденные в ibdata1. Нет возможности стереть это. Вы не можете удалить таблицу, которую ищут метаданные, потому что на соответствующие данные вне ibdata1 нельзя ссылаться через ее индексный дескриптор. Иногда даже mysqldumps не работает, когда попадает в запись таблицы через .frm.

С другой стороны, метаданные, содержащиеся в ibdata1, являются Lunix-ориентированными и ориентированными на индексные дескрипторы, что является концепцией, чуждой Windows на основе FAT. Я бы не стал доверять метаданным InnoDB, построенным таким образом. Выполнение mysqldump дает вам логическое представление данных через SQL, который не зависит от ОС и оборудования.

Если дамп слишком большой, вам нужно сделать параллельные дампы баз данных или таблиц и загрузите эти mysqldumps в MySQL Windows.

Если вы не уверены или опасаетесь писать это, получите MAATKIT и используйте mk-parallel-dump (устаревший инструмент, но подходит для специальных дампов) для вывода данных в виде файлов CSV. Затем используйте mysqldump --no-data --routines --triggers и сгенерируйте файл структур таблиц. Запустите файл структур таблиц в MySQL Windows. Наконец, загрузите CSV в MySQL Windows с помощью LOAD DATA INFILE.