当前位置:   article > 正文

MySQL - Row size too large (> 8126). Changing some columns to TEXT or BLOB_row size too large (> 8126)

row size too large (> 8126)

报错信息

Row size too large (> 8126). Changing some columns to TEXT or BLOB

分析原因

  1. 因为 mysql 默认的 page 最大是 16k,而 page 中单行最大不能超过 8k
  2. 因为 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

  1. SET GLOBAL innodb_file_format='Barracuda'
  2. SHOW GLOBAL VARIABLES LIKE '%file_format%';
  3. ALTER TABLE 表名 ROW_FORMAT=COMPRESSED
  4. SHOW TABLE STATUS LIKE '表名'
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号