MySQL - Row size too large (> 8126). Changing some columns to TEXT or BLOB
Posted 放羊的牧码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL - Row size too large (> 8126). Changing some columns to TEXT or BLOB相关的知识,希望对你有一定的参考价值。
报错信息
Row size too large (> 8126). Changing some columns to TEXT or BLOB
分析原因
- 因为 mysql 默认的 page 最大是 16k,而 page 中单行最大不能超过 8k
- 因为 text 或者 blob 字段太多也会导致一行数据大于 8k,因为 innodb 默认的 approach(羚羊)存储格式会把每个 blob 字段的前 864 个字节存储在 page 里。这样的话一旦有很多个text 或者 blob字段,还是有可能超过 8k
解决方案
1、可以尝试将 varchar 字段改成 text 或者 blob
2、表结构需要重新设计,减少字段个数
3、修改配置方案1
SET INNODB_STRICT_MODE = 0;
4、修改配置方案2
SET GLOBAL innodb_file_format='Barracuda'
SHOW GLOBAL VARIABLES LIKE '%file_format%';
ALTER TABLE 表名 ROW_FORMAT=COMPRESSED
SHOW TABLE STATUS LIKE '表名'
以上是关于MySQL - Row size too large (> 8126). Changing some columns to TEXT or BLOB的主要内容,如果未能解决你的问题,请参考以下文章
MySQL ERROR1118报错详解 Row size too large
mysql创建表时,报错:Row size too large.
mysql创建表报错:ERROR 1118 (42000) ...Row size too large (> 8126)
mysql创建表报错:ERROR 1118 (42000) ...Row size too large (> 8126)