У меня был 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.