博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
批量修改Mysql数据库表MyISAM为InnoDB
阅读量:5861 次
发布时间:2019-06-19

本文共 2355 字,大约阅读时间需要 7 分钟。

网上有这样一个方法:

1.查看当前数据引擎的命令:

  show engines;

2.

    USE `[DBNAME]`;

    SELECT GROUP_CONCAT(CONCAT( 'ALTER TABLE ' ,TABLE_NAME ,' ENGINE=InnoDB; ') SEPARATOR '' )

    FROM information_schema.TABLES AS t

    WHERE TABLE_SCHEMA = '[DBNAME]' AND TABLE_TYPE = 'BASE TABLE';

  将其中的红色部分替换为你所使用的

   执行后其实生成的是查询命令,然后copy生产的命令,执行SQL 即可:

ALTER TABLE info_aaaa ENGINE=InnoDB; ALTER TABLE info_data_bbb ENGINE=InnoDB; ALTER TABLE info_data_ccc ENGINE=InnoDB; ALTER TABLE info_data_ddd ENGINE=InnoDB; ALTER TABLE info_data_eee ENGINE=InnoDB; ALTER TABLE info_data_fffENGINE=InnoDB;

再次查看数据表的数据引擎已经更改了:show table status from [DBNAME];

但是,生成的命令,只有一小部分,可能表太多了吧。

那就用下面这一句,在查询里,贴如下命令,将生成

SELECT concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;') FROM Information_schema.TABLES WHERE TABLE_SCHEMA = 'jingzong' AND ENGINE = 'MYISAM' AND TABLE_TYPE = 'BASE TABLE'

生成的语句是:

CREATE TABLE MY_TABLE (

  `concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;')` VARCHAR
);
INSERT INTO MY_TABLE(`concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;')`) VALUES ('ALTER TABLE jz_admin ENGINE=InnoDB;');
INSERT INTO MY_TABLE(`concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;')`) VALUES ('ALTER TABLE jz_admin_panel ENGINE=InnoDB;');
INSERT INTO MY_TABLE(`concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;')`) VALUES ('ALTER TABLE jz_admin_role ENGINE=InnoDB;');
INSERT INTO MY_TABLE(`concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;')`) VALUES ('ALTER TABLE jz_admin_role_priv ENGINE=InnoDB;');
INSERT INTO MY_TABLE(`concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;')`) VALUES ('ALTER TABLE jz_announce ENGINE=InnoDB;');
INSERT INTO MY_TABLE(`concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;')`) VALUES ('ALTER TABLE jz_attachment ENGINE=InnoDB;');
INSERT INTO MY_TABLE(`concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;')`) VALUES ('ALTER TABLE jz_attachment_index ENGINE=InnoDB;');
INSERT INTO MY_TABLE(`concat('ALTER TABLE ', TABLE_NAME,' ENGINE=InnoDB;')`) VALUES ('ALTER TABLE jz_badword ENGINE=InnoDB;');

全部语句是有了,但这一段,不好使用,

手动建一个文件,把没有用的去掉,批量查询...替换为'',  

留下:ALTER TABLE jz_admin ENGINE=InnoDB;

这样的。

然后再贴到查询里,执行一遍就可以了。

----------  招募未来大神 -----------------------

如果您有利他之心,乐于帮助他人,乐于分享

如果您遇到php问题,百度且问了其他群之后仍没得到解答

欢迎加入,PHP技术问答群,QQ群:292626152

教学相长!帮助他人,自己也会得到提升!

为了珍惜每个人的宝贵时间,请大家不要闲聊!

愿我们互相帮助,共同进步!

加入时留言暗号,php,ajax,thinkphp,yii...

     本文转自phpervip 51CTO博客,原文链接:http://blog.51cto.com/phpervip/1954734,如需转载请自行联系原作者

你可能感兴趣的文章
MySQL表分区
查看>>
自定义类加载器——加载任意指定目录的class文件
查看>>
我的友情链接
查看>>
Linux下查看系统配置(参数)常用命令
查看>>
我的友情链接
查看>>
微信公众号去除密码安全提示
查看>>
13.4 MySQL用户管理;13.5 常用sql语句;13.6 MySQL数据库备份恢复
查看>>
我的友情链接
查看>>
JavaWeb04-HTML篇笔记(五)
查看>>
读《做单--成交的秘密》有感
查看>>
FTP的基础设置
查看>>
hash 内部实现
查看>>
win下使用eclipse运行Nutch1.2
查看>>
软件测试流程
查看>>
JS(JavaScript)的进一步了解1(更新中···)
查看>>
Model、ModelMap、ModelAndView的作用及区别
查看>>
Ruby on Rail学习笔记
查看>>
LaTeX插入jpg图片: 使用graphicx
查看>>
TP为什么这个if判断什么都不显示?
查看>>
Java NIO Related
查看>>