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

Неизвестный табличный движок InnoDB после удаления файла ibdata1

У меня был innodb с одним файлом ibdata. Я изменил его в my.cnf, чтобы иметь файл ibd для каждой таблицы (innodb_file_per_table). затем я запускаю следующий запрос для всех моих таблиц innodb, чтобы иметь собственный файл ibd

alter table tablename engine=innodb;

Теперь, после преобразования всех моих таблиц, ibdata по-прежнему имеет тот же размер, поэтому я удалил его и перезапустил mysql. mysql создал его снова с размером 10 МБ (как определено в my.cnf), но теперь проблема в том, что я могу нормально видеть все свои таблицы, когда показать таблицы; но когда я хочу desc tablename или выберите * из имени таблицы я получаю это сообщение об ошибке

mysql> desc staff;
ERROR 1286 (42000): Unknown table engine 'InnoDB'

И в показать двигатели я не вижу innodb в списке !!
также я пытался удалить ib_logfile0 и ib_logfile1, я получил другое сообщение

ERROR 1146 (42S02): Table 'DBNAME.TableName' doesn't exist

Я знаю, что я должен был выполнить mysqldump и восстановить, но это то, что я сделал :(, кто-нибудь знает, как удалить файл ibdata1 и оставить движок innodb включенным? Спасибо

Остановите mysql, удалите файлы журнала innodb, запустите mysql

Даже с настройкой innodb_file_per_table ibdata * по-прежнему хранит критические (мета) данные о ваших таблицах, вы не должны были уничтожать их. Я боюсь, что ваши данные потеряны, за исключением случаев, когда есть способ извлечь их из файлов idb и восстановить их после восстановления файла ibdata *.

Все метаданные по-прежнему находятся в ibdata1, и нет никакого способа обойти это. Журналы повтора и данные MVCC также по-прежнему находятся в ibdata1.