嗨,我正在寻找一个我可以在我的wordpressdb中转换为myisam的methode(SQL代码)。
从现在开始我的代码是:
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?
刚刚测试了另一种(简单?)的方式,并为我工作。
只需导出您的db作为.sql文件,用gedit或记事本编辑;
;用"引擎= myisam"替换'引擎= innodb'并保存文件编辑
编号或替换应为表格的数量
将其导入mySQL(phpmyadmin或命令行)
和voila!
备份MySQL数据库。通过终端运行此SQL查询,以获取您希望转换为Myisam的数据库。
mysql -h databasehostname -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"
注意:您只需要-H标志,如果您的数据库不在您登录到
终端的机器本地导入该aLTER.SQL文件到InnoDB数据库
mysql -h databasehostname -u username -p databasename < alter.sql
为什么?Myisam在MySQL的下一个版本中即将消失。Myisam效率较低,较不健壮等,等等。
这是ALTERs
的方法:
-
将更改语句生成文件或屏幕。(您已经做到了。)
-
将它们复制(或将它们馈送)复制到MySQL命令行工具中。
-
去喝咖啡。
,但请注意错误。