【MySQL异常】Row size too large (> 1982). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNA
本文目录
一、背景描述
二、报错内容
三、解决方案
四、拓展
一、背景描述
MySQL版本:5.6.28, MySQL引擎 InnoDB。本地环境、开发环境、生产环境数据库版本一模一样。
昨天晚上更新一个项目至生产环境,在本地和开发环境测试的都很正常,但是到生产环境之后,其中一张表中的数据更新有异常。而这张表,不管是MySQL引擎、还是字符集、还是表结构,三个环境一模一样。这就是奇怪的地方。
二、报错内容
关键报错内容为:
Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Row size too large (> 1982). 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.
完整的报错信息如下:
2021-07-06 21:32:20.331 ERROR [http-nio-6184-exec-6][HvacModelEmbodimentServiceImpl.java:95] - E|HvacModelEmbodimentServiceImpl|updateEmbodimentById()|更新实施方案失败,【原因 =
### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Row size too large (> 1982). 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.
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: UPDATE hvac_model_embodiment SET model_id = ?, principle_introduce = ?, line_reserved = ?, realize_function = ?, embodiment_attachment = ?, update_user = ?, update_time = ?, principle_introduce_image = ?, realize_function_image = ?, line_reserved_image = ? WHERE id = ?
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Row size too large (> 1982). 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.
; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Row size too large (> 1982). 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.】
具体字段类型和长度如下图所示:
三、解决方案
按照报错信息提供的修改建议(Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help)
初步判断为部分字段类型和长度不满足需求,经过测试,只有principle_introduce、line_reserved、realize_function和embodiment_attachment四个字段有问题,然后修改了principle_introduce、line_reserved、realize_function和embodiment_attachment这四个字段,类型修改为text之后,这前三个字段可以正常保存成功,但是 embodiment_attachment 这个字段仍然保存失败,报错信息同上,一模一样。
于是又接着按照报错信息提供的修改建议(using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help),把行格式由Compact改为 DYNAMIC 之后 再次测试,保存成功。很完美的把问题解决了。具体修改内容如下图:
但是具体原因还没有查到。以后再深入研究。
四、拓展
根据报错信息,在网上搜索为什么会出现这样的情况,根据网上提供的一些资料,这个问题可能与不同引擎之间使用的存储格式有关。很多都说把InnoDB引擎改为MyISAM引擎即可。
而MyISAM有3种行存储格式:fixed/dynamic/compressed。InnoDb在MyIASM基础上新引入了Barracuda。至于不同引擎的默认设置,以及各种存储格式之间的区别,我也没有深入研究,以后有时间再去深入了解一下。
完结!
【MySQL异常】Row size too large (> 1982). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNA相关推荐
- Mysql数据库报错:Row size too large ( 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DY
1.问题描述: Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DY ...
- 亲身实践已解决:Mysql Row size too large ( 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT
今天在把一个数据库的数据导出sql在另外一个库中执行的时候出现了这个问题, 查看当前的表类型为innodb 找到mysql的安装目录,找到配置文件my.ini 进行如下修改: innodb_file_ ...
- Row size too large ( 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC
将InnoDB 改为MYISAM再重新执行就可以
- ERROR 1118 (42000): Row size too large (8126). Changing some columns to TEXT or BLOB or using ROW_
ERROR 1118 (42000): Row size too large (> 8126). Changing some columns to TEXT or BLOB or using R ...
- mysql的rows大小超过8126_Row size too large ( 8126). Changing some columns to TEXT or BLOB
当插入的一行数据大于8k 时...mysql会提示错误 如下 Row size too large (> 8126). Changing some columns to TEXT or BLOB ...
- Mysql数据库报错:Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DY
1.问题描述: Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DY ...
- 解决办法之Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC
报错:Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC ...
- Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC
今天在对MySQL数据库进行数据处理时,遇到一个错误: Row size too large (> 8126). Changing some columns to TEXT or BLOB or ...
- 1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMI
ERROR 1118 (42000) at line 5: Row size too large (> 8126). Changing some columns to TEXT or BLOB ...
最新文章
- 《Windows Server 2012 Hyper-V虚拟化管理实践》——1.3 物理服务器选型建议
- C# TCP sever client
- 语义分析的一些方法(上篇)
- 如何在C/S下打印报表
- Netty入门(二)时间服务器及客户端
- Java读取Propertity文件
- 构建jQuery对象(转)
- UVALive5910 UVA1641 POJ4022 ASCII Area【水题+输入输出】
- 反射异常 java.lang.InstantiationException处理
- java窗口全屏_java如何改全屏为窗口?求啊啊啊啊
- 深信服(SCSA)认证学习—基础知识点二
- 步进电机怎么选型?步进电机驱动器选型要怎么选?
- 教你认识各种分辨率的英文缩写
- ISP简介(stm32)
- 任正非:华为要的是全世界
- 汉语自动分词研究评述
- vue中引入swiper(4.0+),打包出错( ERROR in static/js/4.bafdba9a08bd02fd1c37.js from UglifyJs Unexpected toke)
- notepad++的下载安装
- aix ds多路径_AIX连接IBM存储 多路径软件常用命令
- UNIX常用命令整理
热门文章
- 软考高项计算题公式:PV, EV, AC, CV, SV, CPI, SPI, ETC, EAC,BAC
- Python 列表,for循环,元组的使用(修改、添加、删除、排序、切片)
- SY-REPID 和 SY-CPROG使用详解及其区别
- 关于Android app正式版本和测试版本的切换
- DL之RNN:人工智能为你写周董歌词——基于TF利用RNN算法实现【机器为你作词】、训练测试过程全记录
- php在线查毒,linux clamav 免费查毒工具
- Android自动化测试框架uiautomator2详解
- 在您所指定的角色服务器,指定 RD 会话主机服务器的远程桌面授权模式
- python怎么算阶乘_python计算阶乘
- mysql高级学习笔记