删除ibdata1文件后,表名引擎'InnoDB'未知

我有一个ibdata文件innodb。 我已经在my.cnf中更改了每个表(innodb_file_per_table)的ibd文件。 那么我在我所有的innodb表上运行以下查询来拥有自己的ibd文件

 alter table tablename engine = innodb;

现在转换所有的表后,ibdata仍然有相同的大小,所以我已经删除它,并重新启动MySQL。 mysql已经创build了10MB的大小(在my.cnf中定义),但是现在的问题是我可以在显示表时正常看到所有的表。 但每当我想desc tablenameselect*从表名我得到这个错误信息

 mysql> desc人员;
错误1286(42000):未知表引擎'InnoDB'

而在展示引擎中,我无法在列表中看到innodb!
另外我试图删除ib_logfile0和ib_logfile1,我有另一个消息

错误1146(42S02):表'DBNAME.TableName'不存在

我知道我应该mysqldump和恢复,但是这是我做了:(有人有一个想法,如何删除ibdata1文件,并保持innodb引擎启用?谢谢

即使使用innodb_file_per_table设置,ibdata *仍然存储关于表的关键(元)数据,但不应该销毁它。 我担心你的数据丢失了,除非有办法从idb文件中提取它们并在ibdata *文件重build后恢复它们。

所有的元数据仍然驻留在ibdata1,绝对没有办法。 重做日志和MVCC数据也依然存在于ibdata1中。

停止mysql,删除innodb日志文件,启动mysql