我想将引擎类型从 MyISAM 更改为 InnoDB。 我做了什么: 方法一:
在这里,我可以看到表的总行数和表的大小。但浏览时看不到任何记录。
方法2:
在这里,我注意到更改引擎类型后许多记录被删除。 更改引擎类型后,客户表中导入的记录为 310749 条,我只看到 243898 条,总共丢失了 66851 条记录。
这有什么问题吗? 任何其他方法可以将类型从 MyISAM 更改为 InnoDB 而不会丢失数据。
最佳答案
只需执行 ALTER TABLE foo ENGINE=InnoDB;
但这就可以“就地”完成。如果您希望新表位于不同的数据库中:
CREATE TABLE db2.foo LIKE db1.foo;
ALTER TABLE db2.foo ENGINE=InnoDB; -- and possibly other changes, see blog below
INSERT INTO db2.foo
SELECT * FROM db1.foo; -- copy data over
SELECT COUNT(*) FROM db1.foo;
SELECT COUNT(*) FROM db2.foo; -- compare exact number of rows
行数——如果您使用SHOW TABLE STATUS
来查看行数,请注意MyISAM提供了精确的行数,但InnoDB仅提供近似值。使用SELECT COUNT(*) FROM foo
获取确切的行数。
在这里,让我把从 MyISAM 迁移到 InnoDB 的旧博客上的蜘蛛网扫掉:http://mysql.rjweb.org/doc.php/myisam2innodb
关于mysql - 将引擎类型从 MyISAM 更改为 InnoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56735083/