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

时间:2017-02-27 03:23:31

标签: mysql sql innodb myisam

大家好我正在寻找一种方法(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代码立即执行所有这些行?

提前致谢

P.S。:我可以使用"更新"解决这个问题,因为更新可能会将引擎更新为MyISAM?

3 个答案:

答案 0 :(得分:1)

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

只需将您的数据库导出为.sql文件,使用gedit或记事本进行编辑;

替换' ENGINE = INNODB'与' ENGINE = MyISAM'并保存编辑的文件

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

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

和Voila!

答案 1 :(得分:0)

为什么呢? MyISAM将在MySQL的下一个版本中消失。 MyISAM效率低,不太稳健等等。

以下是ALTERs

的操作方法
  1. 在文件或屏幕中生成alter语句。 (你已经做到了。)

  2. 将它们(或将它们)复制到mysql命令行工具中。

  3. 去喝咖啡。

  4. 但请注意错误。

答案 2 :(得分:0)

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

let x = () => 3;
let y = (a, b = x()) => a + b;

console.log(y(5)); // 8
console.log(y(5, 1)); // 6

注意:用您的实际数据库名称更改“ db_name”

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