首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将所有InnoDB表转换为MyISAM?

问如何将所有InnoDB表转换为MyISAM?
EN

Stack Overflow用户
提问于 2017-02-27 11:23:31
回答 3查看 4.3K关注 0票数 2

大家好,我正在寻找一种方法(sql代码),用它我可以在我的WordpressDB中将所有InnoDB转换为MyISAM。

从现在开始我的代码是:

代码语言:javascript
复制
SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME,' ENGINE=MyISAM;') FROM Information_schema.TABLES WHERE ENGINE = 'InnoDB'

这带给我的是:

代码语言:javascript
复制
ALTER TABLE db.wp_comments ENGINE=MyISAM;
ALTER TABLE db.wp_links ENGINE=MyISAM;
ALTER TABLE db.wp_options ENGINE=MyISAM;
ALTER TABLE db.wp_postmeta ENGINE=MyISAM;
ALTER TABLE db.wp_posts ENGINE=MyISAM;
ALTER TABLE db.wp_term_relationships ENGINE=MyISAM;
ALTER TABLE db.wp_term_taxonomy ENGINE=MyISAM;
ALTER TABLE db.wp_termmeta ENGINE=MyISAM;
ALTER TABLE db.wp_terms ENGINE=MyISAM;
ALTER TABLE db.wp_usermeta ENGINE=MyISAM;
ALTER TABLE db.wp_users ENGINE=MyISAM;

现在,我想一次执行所有这些行,我想将所有结果保存在一个变量中并执行它们。但是sql变量只能保存一行...我如何用简单的sql代码一次执行所有这些行?

提前感谢

附言:我是否可以使用“更新”来解决这个问题,因为更新可能会将引擎更新到MyISAM?

EN

回答 3

Stack Overflow用户

发布于 2018-04-23 20:22:11

刚刚测试了另一个(简单?)方式,并为我工作。

只需导出您的数据库为.sql文件,编辑-它与gedit或记事本;

将'ENGINE=INNODB‘替换为'ENGINE=MyISAM’并保存编辑过的文件

完成的数量或替换应该是您的表的数量

将其导入到MySQL (phpMyAdmin或命令行)

瞧!

票数 5
EN

Stack Overflow用户

发布于 2017-02-28 07:03:09

为什么?在MySQL的下一个版本中,MyISAM将会消失。MyISAM效率较低,健壮性较差,等等。

下面是如何执行ALTERs

  1. 将alter语句生成到文件或屏幕中。(您已经做到了。)
  2. 将它们复制(或提供)到mysql命令行工具中。
  3. 去喝杯咖啡。

但要注意错误。

票数 0
EN

Stack Overflow用户

发布于 2020-02-22 07:30:55

备份Mysql数据库。通过终端或在phpmyadmin中为您希望转换为MYISAM的数据库运行此sql查询。

代码语言:javascript
复制
mysql -u username -p -e "SELECT concat('ALTER TABLE ', TABLE_NAME,' ENGINE=MYISAM;') FROM Information_schema.TABLES WHERE TABLE_SCHEMA = 'db_name' AND ENGINE = 'InnoDB' AND TABLE_TYPE = 'BASE TABLE'" | tail -n+2 >> alter.sql

注意:将‘db_name’更改为您的实际数据库名称

将alter.sql文件导入到INNODB数据库中

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

https://stackoverflow.com/questions/42477334

复制
相关文章

相似问题

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