gpt4 book ai didi

mysql - 将引擎类型从 MyISAM 更改为 InnoDB

转载 作者:行者123 更新时间:2023-11-29 02:09:31 29 4
gpt4 key购买 nike

我想将引擎类型从 MyISAM 更改为 InnoDB。我做了什么:方法一:

  1. 在新数据库中复制表结构。
  2. 将表引擎从 MyISAM 更改为 InnoDB。
  3. 从现有表 (MyISAM) 导出数据。
  4. 将数据导入新表 (InnoDB)。 enter image description here enter image description here enter image description here

在这里,我可以看到一个表的总行数和表的大小。但是浏览时没有看到任何记录。

方法二:

  1. 在新数据库中复制表结构。

  2. 从现有数据库导出数据。

  3. 将数据导入新数据库。
  4. 将表引擎从 MyISAM 更改为 InnoDB。 enter image description here enter image description here

在这里,我注意到更改引擎类型后许多记录被删除。customer表导入的记录是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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com