我想将引擎类型从MyISAM更改为InnoDB。 我做了什么: 方法1:
在这里,我可以看到一个表的总行数和该表的大小。但在浏览器上看不到任何记录。
方法2:
在这里,我注意到在更改引擎类型之后,许多记录被删除。 在客户表中,输入更改引擎类型后的记录为310749,我看到的只有243898,丢失的总记录为66851。
这有什么问题? 将数据类型从MyISAM更改为InnoDB的任何其他方法,都不会丢失数据。
答案 0 :(得分:2)
只需执行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