欢迎您, 来到 宁时修博客.^_^

MySQL表字段大小及个数错误解决

2017/03/30 言则行 MySQL 1364
MySQL表字段大小及个数限制

一、错误缘由

  今日,公司开发在测试表字段大小与个数测试,发给我一个错误:

Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC 
or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.

  行大小超过限制,大于8126,改变某些列的TEXT或BLOB,或者设置ROW_FORMAT=DYNAMIC或ROW_FORMAT=COMPRESSED可以帮助解决,在当前行格式中,BLOB是768字节。


二、本地MySQL环境参数情况

  MySQL是5.6版本,使用Innodb引擎。经过在互联网查询错误,定位了错误来源。

  MySQL5.6默认表类型:Innodb,row_format=compact(默认表的行格式),innodb_file_format=Antelope(默认innodb文件格式)。

  插入超过10个BLOB,BLOB数据量大于768字节,则报错:

Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC 
or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.


三、解决方案

  修改MySQL参数

+--------------------------+-----------+
| Variable_name            | Value     |
+--------------------------+-----------+
| innodb_file_format       | Antelope  |
| innodb_file_format_check | ON        |
| innodb_file_format_max   | Antelope  |
+--------------------------+-----------+

  修改为以下结果:

+--------------------------+-----------+
| Variable_name            | Value     |
+--------------------------+-----------+
| innodb_file_format       | Barracuda |
| innodb_file_format_check | ON        |
| innodb_file_format_max   | Barracuda |
+--------------------------+-----------+

  修改方式:

SET GLOBAL INNODB_FILE_FORMAT=BARRACUDA;
SET GLOBAL INNODB_FILE_FORMAT_MAX=BARRACUDA;

  这只是临时动态修改,重启MySQL后就会恢复原来的格式,因此要写入my.cnf配置文件中的[mysqld]下:

innodb_file_per_table = 1   #如果没开独立表空间,要开启                                                                                                                               
innodb_file_format = Barracuda


  注意:修改后的innodb_file_format=Barracuda格式只影响后续创建的表,原来创建的表还是原来的格式,因此还需修改表的行格式ROW_FORMAT=COMPACT或ROW_FORMAT=DYNAMIC。

ALTER TABLE xxx ROW_FORMAT=COMPACT
ALTER TABLE xxx ROW_FORMAT=DYNAMIC

 两种格式取其一就行。

 设置完毕,重新连接MySQL,再插入大长度的列就没事了。


 PS:感谢互联网上的大神们提供解决方案!!!!


点赞
说说你的看法

所有评论: (0)

# 加入组织

1、用手机QQ扫左侧二维码

2、搜Q群:1058582137

3、点击 宁时修博客交流群