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

Mysql 如何将所有InnoDB表转换为MyISAM?,mysql,sql,innodb,myisam,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

大家好,我正在寻找一种方法(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吗?

为什么?MyISAM将在MySQL的下一个版本中退出。MyISAM效率较低,不太健壮,等等

以下是如何进行
更改

  • 将alter语句生成到文件或屏幕中。(你已经做到了。)

  • 将它们复制(或馈送)到mysql命令行工具中

  • 去喝杯咖啡

  • 但是要注意错误。

    刚刚测试了另一种(简单的?)方法,对我有效

    只需将DB导出为.sql文件,用gedit或记事本编辑即可

    将“ENGINE=INNODB”替换为“ENGINE=MyISAM”,并保存已编辑的文件

    完成的数量或替换应为表的数量

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


    备份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
    
    注意:将“数据库名称”更改为您的实际数据库名称

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