У меня есть MySQL InnoDB, в котором есть все файлы таблиц базы данных, но MySQL их не видит и не загружает.
Проблема произошла потому , что я удалил эти три файла: ibdata1
, ib_logfile0
иib_logfile1
потому что у меня были проблемы с запуском mysql, и я прочитал об их удалении, потому что MySQL просто восстановит их (я знаю, что должен был их зарезервировать, но не сделал).
Что я могу сделать, чтобы MySQL снова увидел таблицы?
about_member.frm site_stories.frm
about_member.ibd site_stories.ibd
db.opt stories.frm
FTS_00000000000000bb_BEING_DELETED_CACHE.ibd stories.ibd
FTS_00000000000000bb_BEING_DELETED.ibd story_comments.frm
FTS_00000000000000bb_CONFIG.ibd story_comments.ibd
FTS_00000000000000bb_DELETED_CACHE.ibd story_likes.frm
FTS_00000000000000bb_DELETED.ibd story_likes.ibd
FTS_00000000000000f5_BEING_DELETED_CACHE.ibd story_tags.frm
FTS_00000000000000f5_BEING_DELETED.ibd story_tags.ibd
FTS_00000000000000f5_CONFIG.ibd story_views.frm
FTS_00000000000000f5_DELETED_CACHE.ibd story_views.ibd
FTS_00000000000000f5_DELETED.ibd story_view_totals.frm
member_favorites.frm story_view_totals.ibd
member_favorites.ibd tags.frm
members.frm tags.ibd
members.ibd
Ответы:
Вот почему MySQL не может видеть эти файлы: Системное табличное пространство (ibdata1) имеет специальный словарь данных для Storage-Engine, который позволяет InnoDB отображать потенциальное использование таблицы:
Перемещение таблиц InnoDB из одного места в другое требует таких команд, как
Вот часть документации MySQL 5.5, объясняющая, что нужно учитывать
Учитывая эти предостережения и протоколы, вот рекомендуемый порядок действий
Для этого примера давайте попробуем восстановить
tags
таблицу вmydb
базе данных.ШАГ 1
Убедитесь, что у вас есть резервные копии этих
.frm
и.ibd
файлов в/tmp/innodb_data
ШАГ 2
Получить
CREATE TABLE tags
заявление и выполнить его какCREATE TABLE mydb.tags ...
. Убедитесь, что это точно такая же структура, как оригиналtags.frm
ШАГ 3
Удалить пустое
tags.ibd
с помощью MySQLШАГ № 4
Принесите резервную копию
tags.ibd
ШАГ № 5
Добавить
tags
таблицу в словарь данных InnoDBШАГ 6
Проверьте доступность таблицы
Если вы получаете нормальные результаты, поздравляем вас с импортированием таблицы InnoDB.
ШАГ 7
В будущем, пожалуйста, не удаляйте ibdata1 и его логи
Попробуйте!
Я обсуждал такие вещи раньше
Apr 23, 2012
: MySQL: как восстановить таблицу, хранящуюся в .frm и .ibd файле?Sep 28, 2011
: Как восстановить таблицу InnoDB, файлы которой были перемещеныПРЕДОСТЕРЕЖЕНИЕ
Что делать, если вы не знаете структуру таблицы
tags
?Существуют инструменты для получения оператора CREATE TABLE, просто используя
.frm
файл. Я также написал пост об этом: Как извлечь схему таблицы только из файла .frm? , В этом посте я скопировал файл .frm на компьютер с Windows из коробки Linux, запустил инструмент Windows и получилCREATE TABLE
заявление.источник
weblyize
.tags
' существует. Пожалуйста, отмените табличное пространство перед импортом. Итак, сначала я пытаюсь запустить alter tablespace и получаю эту ошибку: ОШИБКА 1146 (42S02): Таблица 'weblyize.tags' не существует . Что я могу сделать?CREATE TABLE ...
следовал вашим шагам! Вы избавили меня от необходимости переписывать их на 100% с нуля! Он не импортировал внешние ключи, но это нормально, я могу сделать это сам! Еще раз спасибо!У меня такая же ситуация, не могу сбросить или создать конкретное имя пользователя. Моя процедура исправления:
Стоп MySQL.
Удалите ib_logfile0 и ib_logfile1.
Удалить файлы tblname. ВНИМАНИЕ: ЭТО ПОСТОЯННО УДАЛИТ ВАШИ ДАННЫЕ
Запустите MySQL.
источник
У меня тоже была эта пробема. Я удалил
ibdata1
случайно, и все мои данные были потеряны.После 1-2 дней поиска в Google и SO, наконец, я нашел решение, которое спасло мне жизнь (у меня было так много баз данных и таблиц с огромными записями).
взять резервную копию от
/var/lib/mysql
восстановить схему таблицы из
.frm
файла с помощью dbsake (был другой вариант! mysqlfrm ., но у меня это не сработало)создать новую таблицу (с новым именем) с экспортированной схемой.
сбросить новые данные таблицы с помощью этой команды:
/var/lib/mysql/database-name
и если есть данные (.ibd
файл) для старой таблицы, удалите ее.источник