问题:数据库 mysql (5.6.45)数据库 row size too large (8126)
解决:
1.设置mysql全局变量
设置命令:SET GLOBAL innodb_file_format='Barracuda';
检查命令:show GLOBAL VARIABLES LIKE '%file_format%';
2.设置对应表的属性(行格式)
alter table 表名 ROW_FORMAT=COMPRESSED
同时,为防止myslq服务重启还原,还要修改my.cnf,在[mysqld]
添加以下两行:
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_file_format
- Antelope(羚羊) Built-in-InnoDB(MySQL内置的InnoDB)支持文件格式的代号,有两种“数据表格式”(row_format):Redundant(冗余)、Compact(紧凑) 。
- Barracuda(梭子鱼)是InnoDB Plugin支持的文件格式,在原来的基础上新增了两种数据表格式的支持:Dynamic 和 Compressed 。
- innodb_file_format在配置文件中指定,row_format则在创建数据表时指定
常见的行格式
- 行格式的应用都是针对于表的,只有在创建表的时候才能使用row_format,在创建库的时候无法指定行格式。
- 表的行格式也是决定了这张表下面的物理存储方式,会影响查询和DML操作的性能。
- 常见的表行格式有以下4种:
(1)REDUNDANT
(2)COMPACT
(3)DYNAMIC
(4)COMPRESSED
各种行格式的特点及缺点:
行格式 | 紧凑的存储特性 | 增强的可变长度色谱柱存储 | 大索引键前缀支持 | 压缩支持 | 支持的表空间类型 |
---|---|---|---|---|---|
REDUNDANT | 没有 | 没有 | 没有 | 没有 | 系统,每表文件,常规 |
COMPACT | 是 | 没有 | 没有 | 没有 | 系统,每表文件,常规 |
DYNAMIC | 是 | 是 | 是 | 没有 | 系统,每表文件,常规 |
COMPRESSED | 是 | 是 | 是 | 是 | 每表档案,一般 |