mysql5.6批量设置表ROW_FORMAT =DYNAMIC问题
mysql5.6批量设置表ROW_FORMAT =DYNAMIC
安装某个软件的时候提示
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes
后来发现是一些参数设置的问题,不知道mysql5.7会不会出现这个问题,
没有测试大家可以直接升级到mysql5.7看能不能解决
解决方法
1: 系统变量innodb_large_prefix为ON
2: 系统变量innodb_file_format为Barracuda
3: ROW_FORMAT为DYNAMIC或COMPRESSED
将这三个变量设置为以上状态:
分别可以使用命令
1)show variables like '%innodb_large_prefix%';
2)show variables like '%innodb_file_format%';
3)SELECT table_schema, table_name, row_format FROM information_schema.TABLES
WHERE table_schema IN ( '数据库名') 【可以加筛选命令不是Dynamic的表 AND information_schema.TABLES.row_format <> 'Dynamic'】
查看参数状态如果参数状态不正确可以使用
set global innodb_large_prefix=on; set global innodb_file_format=Barracuda;
两个命令完成
问题是第三个修改比较麻烦,mysql5.6没有全局设置表为ROW_FORMAT为DYNAMIC或COMPRESSED的属性,所以得一个个修改,后来想了个办法,
可以这样尝试操作:
1)可以通过命令
筛选出不等于Dynamic的表并生成更新语句
SELECT CONCAT( "ALTER TABLE `", table_schema, "`.`", table_name, "` ROW_FORMAT =DYNAMIC ;" ) FROM information_schema.TABLES WHERE table_schema IN ( '数据库名' ) AND information_schema.TABLES.row_format <> 'Dynamic'
将生成的语句批量执行就可以了!
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
mysql 8.0.28 winx64.zip安装配置方法图文教程
这篇文章主要为大家详细介绍了mysql 8.0.28 winx64.zip安装配置方法图文教程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2022-04-04mysql中drop、truncate与delete的区别详析
对于drop、truncate和delete虽然简单,但是真要使用或者面试时候问到还是需要有一定的总结,下面这篇文章主要给大家介绍了关于mysql中drop、truncate与delete区别的相关资料,需要的朋友可以参考下2022-03-03
最新评论