我有一个ibdata文件innodb。 我已经在my.cnf中更改了每个表(innodb_file_per_table)的ibd文件。 那么我在我所有的innodb表上运行以下查询来拥有自己的ibd文件
alter table tablename engine = innodb;
现在转换所有的表后,ibdata仍然有相同的大小,所以我已经删除它,并重新启动MySQL。 mysql已经创build了10MB的大小(在my.cnf中定义),但是现在的问题是我可以在显示表时正常看到所有的表。 但每当我想desc tablename或select*从表名我得到这个错误信息
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