После сбоя сервера Mac я пытаюсь восстановить записи из таблицы InnoDB. Все таблицы использовали один файл данных. Я скопировал ibdata1 и два файла журнала на новый сервер mysql, размещенный в Windows, для восстановления вместе с единственным файлом .frm для нужной мне таблицы. Пока восстановление безуспешно.
Пробуем разные innodb_force_recovery
варианты в сочетании с lower_case_table_names
опции для копий этих файлов данных не решают проблему. Даже нормальный запуск с использованием копий этих файлов сначала обнаруживает сбой и исправляет его, а дальнейшие запуски не дают ошибок. Удаление файлов ib_logfiles и повторное их создание Mysql при перезапуске не решает проблему. Изменение имени файла .frm на все строчные буквы и перезапуск не решают проблему.
SHOW TABLES
запрос показывает таблицу, но любой запрос к самой таблице завершается ошибкой 1146. При запуске innodb_table_monitor
, в выходных данных я четко вижу определение таблицы (более или менее) и количество строк. Просматривая содержимое файла ibdata1, я вижу все данные записи в виде обычного текста, но нет подходящего шаблона для их анализа.
Насколько я могу судить, проблема, похоже, сводится к «ошибке 1146 - Таблица 'db.my_table' не существует», когда я пытаюсь ссылаться на таблицу в любой команде или запросе. Видите ли, на Mac таблица была создана с заглавными буквами, и, согласно Mysql, Windows не может с этим справиться.
Кто-нибудь знает решение для извлечения этих записей?
попробуйте установить Подсистема для UNIX-приложений Это либо устанавливает, либо предоставляет возможность установить * nix версию mysql, которая может решить вашу проблему. Технически говоря, проблема заключается не в том, что окна не могут обрабатывать символы верхнего регистра (окна, безусловно, могут отображать их), проблема должна заключаться в том, что mysql использует регистр в окнах, которые по умолчанию не заботятся о регистре и часто возвращает имена файлов в нижнем регистре (или иногда во всех верхних регистрах - это зависит от конкретного вызова).