首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将引擎类型从MyISAM更改为InnoDB

将引擎类型从MyISAM更改为InnoDB
EN

Stack Overflow用户
提问于 2019-06-24 10:55:27
回答 1查看 209关注 0票数 2

我想将引擎类型从MyISAM更改为InnoDB。我所做的:方法1:

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

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

方法2:

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

在这里,我注意到在更改引擎类型之后,会删除许多记录。在客户表中导入的记录是310749后更改引擎类型,我只看到243898条,损失共计66851条记录。

这是怎么回事?将类型从MyISAM更改为InnoDB的任何其他方法,而不会丢失数据。

EN

回答 1

Stack Overflow用户

发布于 2019-06-24 16:19:42

只需做ALTER TABLE foo ENGINE=InnoDB;,但这样做是“就地”。如果要将新表放在不同的数据库中:

代码语言:javascript
复制
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的旧博客上的蜘蛛网去掉。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56735083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档