大家好,我正在寻找一种方法(sql代码),用它我可以在我的WordpressDB中将所有InnoDB转换为MyISAM。
从现在开始我的代码是:
SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA, '.', TABLE_NAME,' ENGINE=MyISAM;') FROM Information_schema.TABLES WHERE ENGINE = 'InnoDB'这带给我的是:
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?
发布于 2018-04-23 20:22:11
刚刚测试了另一个(简单?)方式,并为我工作。
只需导出您的数据库为.sql文件,编辑-它与gedit或记事本;
将'ENGINE=INNODB‘替换为'ENGINE=MyISAM’并保存编辑过的文件
完成的数量或替换应该是您的表的数量
将其导入到MySQL (phpMyAdmin或命令行)
瞧!
发布于 2017-02-28 07:03:09
为什么?在MySQL的下一个版本中,MyISAM将会消失。MyISAM效率较低,健壮性较差,等等。
下面是如何执行ALTERs
但要注意错误。
发布于 2020-02-22 07:30:55
备份Mysql数据库。通过终端或在phpmyadmin中为您希望转换为MYISAM的数据库运行此sql查询。
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数据库中
https://stackoverflow.com/questions/42477334
复制相似问题