MYSQL数据库更新text字段时出现Row size too large报错应付措施
发布时间:2020-12-12 02:26:14 所属栏目:MySql教程 来源:网络整理
导读:《MYSQL数据库更新text字段时出现Row size too large报错应付措施》要点: 本文介绍了MYSQL数据库更新text字段时出现Row size too large报错应付措施,希望对您有用。如果有疑问,可以联系我们。 起因 : 团购开发申报说更新时出错. 更新SQL如下 : 代码如下
《MYSQL数据库更新text字段时出现Row size too large报错应付措施》要点: 团购开发申报说更新时出错. 更新SQL如下: 代码如下: UPDATE table_name d SET d.column_name='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' WHERE d.ID=100976; 报错信息如下: Error Code : 1118 Row size too large. The maximum row size for the used table type,not counting BLOBs,is 8126. You have to change some columns to TEXT or BLOBs 疑惑: 更新字段只涉及 column_name字段,且该字段是TEXT类型. 个人之前理解是: TEXT的内容在 Dynamic的table format下是存在off-page中的,不会占用row size的计算. Barracuda 对应row_format ( dynamic,compress),其中dynamic下text的所有内容都是off-page存放的 (点击查看) Antelope 对应row_format (compact,redundant),其中compact下的text是存786B在row中,超过部分存在off-page 而服务器配置是 innodb_file_format = Barracuda 照理说所有table用的都是 dynamic 结构. 但是! 原因如下,摘自文档: To preserve compatibility with those prior versions,tables created with the InnoDB Plugin use the prefix format,unless one of ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED is specified (or implied) on the CREATE TABLE command. 也便是说,建表时不显示指定 row_format = dynamic,即使 innodb_file_format = Barracuda 表的row-format还是 compact 所以总结为一句话便是:如果某个表的text字段很多建议建表时加上 row_format = dynamic 当然,回过头来MySQL的报错也是有误导性的,bug库中也对confirm了这个bug(点击查看),并在5.1.61中优化了报错提示. 编程之家PHP培训学院每天发布《MYSQL数据库更新text字段时出现Row size too large报错应付措施》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- What does Using filesort mean in MySQL?
- Mysql学习mysql 编码机制分析
- Mysql应用浅析mysql交互式连接&非交互式连接
- Mysql入门mysql安全启动脚本mysqld_safe详细介绍
- Mysql实例mysql利用init-connect增加访问审计功能的实现
- MYSQL SELECT与AES_ENCRYPT类似
- XP下“操作必须使用一个可更新的查询”的解决办法
- MYSQL教程mysql 5.7.14 下载安装配置方法图文教程
- MYSQL教程一个MySql Sql 优化技巧分享
- Loading half a billion rows into MySQL---转载