欢迎您来到腾讯云!积分商城

腾讯云腾讯云论坛

 找回密码
 立即注册
忘了密码?

扫一扫,访问微社区

快捷导航
搜索
查看: 775|回复: 2

[经验分享] 一学就会的批量修改表引擎为innodb的方法

[复制链接]

6

主题

0

好友

600

积分

程序猿[LV2]

Rank: 2Rank: 2

云币
2040
威望
600
发表于 2018-3-9 16:39:41 |显示全部楼层 |未分类
问题 :
在之前的
数据导入失败--Table storage engine for 'xxx' dosen't have this option
http://bbs.qcloud.com/thread-48650-1-1.html

这个文档中提到解决方案需要将表都改为innodb存储引擎或row_format改为DYNAMIC

如果一查查出来一百张表都有该问题 , 一个一个改 ,要改到什么时候 , 我又不会写批量修改的脚本 ,怎么办

有一个非常简单的甚至觉得有点low的方法可以做到 , 需要用到的工具也很简单

简单示例:

测试环境:
QQ截图20180309154951.jpg

假设这里查出来有100个表要修改

1 .我们先用这两条语句查出来我们需要修改的表 ,如上图 , 我们需要先改row_format 再改 引擎 , 顺序反了会报错
SELECT table_schema, table_name,engine FROM information_schema.tables WHERE engine <> 'InnoDB' AND table_schema NOT IN ('mysql' ,'performance_schema','information_schema');
查看不是innodb的表
SELECT table_schema,table_name,row_format from information_schema.tables where Row_format like '%fix%' AND table_schema NOT IN ('mysql','performance_schema','information_schema');
查看row_format是fix的表

2.我们先把row_format是fixed的表复制出来 ,贴到工具里 , 这里用notepad++(百度上搜下下载一个,值得拥有) ,其实word也可以
只用复制中间的这部分就行
QQ截图20180309163257.jpg


3.我们按下ctrl+f打开搜索框 ,按照图示操作 ,然后点击全部替换 ,这里要修改三次
第一次:
修改前
QQ图片20180309160707.jpg

修改后
QQ截图20180309160856.jpg


第二次:
修改前
QQ截图20180310155049.png

修改后:
QQ截图20180309161321.jpg

第三次:
修改前
QQ截图20180309161520.jpg

修改后:
QQ截图20180309161616.jpg


这样我们的修改row_format的语句就完成啦

4. 我们把生成的sql语句在mysql命令行中执行一下 , 复制 ,粘贴 ,回车就行了
执行完成后再用语句查下row_format是fixed的表 ,已经没有了

QQ截图20180309162032.jpg


5.用同样的方法修改表引擎为innodb ,这里就不详细截图了 , 也是改三次
先把不是innodb的表的查询结果复制出来
QQ截图20180309162343.jpg

第一次:
QQ截图20180309162524.jpg

第二次:
QQ截图20180309162653.jpg

第三次:
QQ截图20180309162849.jpg

最后生成语句:
QQ截图20180309162936.jpg


6.我们把生成的sql语句在mysql命令行中执行一下 , 复制 ,粘贴 ,回车就行了
执行完成后再用语句查下不是innodb的表 ,已经没有了
QQ截图20180309163119.jpg


大功告成~

就是使用文本编辑工具将一些字符替换了下 ,拼接出来修改命令
当然该引擎的时候可能还有其他限制 , 可以先批量跑一下 , 有修改失败的 , 再用语句查下 , 然后单独执行下修改命令看下具体报错
常见的报错 , 在innodb存储引擎中 , 自增字段必须是一个单独的key , myisam引擎中没有将自增字段设置成独立的key的话 ,在修改引擎的时候就会报错 , 解决方法也很简单 , 把自增字段加个key就行啦~~~ 加完再修改表引擎
QQ图片20180309160707.jpg

6

主题

0

好友

600

积分

程序猿[LV2]

Rank: 2Rank: 2

云币
2040
威望
600
发表于 2018-3-10 15:54:41 |显示全部楼层
其中有一张图后补的 ,画风有点不一样 ,嘿嘿嘿
回复

使用道具 举报

1

主题

0

好友

210

积分

小白[LV1]

Rank: 1

云币
478
威望
210
发表于 2018-7-25 18:27:42 |显示全部楼层
谢谢分享 解决了我的大难题!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
您需要登录后才可以发帖 QQ登录

联系我们|腾讯云平台|积分商城|腾讯云官方论坛    

GMT+8, 2018-8-17 09:18 , Processed in 1.198334 second(s), 31 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部