• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 更新text字段时出现Row size too large报错应付措施

更新text字段时出现Row size too large报错应付措施

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了text字段等相关知识,希望本文的分享对您有所帮助

个人建议:表的text字段很多建议建表时加上 row_format = dynamic当然,回过头来MySQL的报错也是有误导性的,感兴趣的你可以参考下本文

起因:
团购开发报告说更新时出错。

更新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中优化了报错提示。
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2018-12-05如何学习MySQL?MySQL中update使用以及MySQL更新
  • 2018-12-05sqlserver2005 行列转换实现方法
  • 2017-05-11sql自增长设置与删除的深入分析
  • 2018-12-05关于关联数据库的10篇文章推荐
  • 2018-12-05SQL学习笔记三 select语句的各种形式小结
  • 2017-05-11mysql 无限级分类实现思路
  • 2018-12-05查看Oracle某个进程的环境变量
  • 2018-12-05sqlserver对字段的添加修改删除、以及字段的说明
  • 2017-05-11Mysql联合查询UNION和Order by同时使用报错问题的解决办法
  • 2018-12-05sql根据表名获取字段及对应说明

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • mysql之set与enum的介绍
    • sqlserver 比较两个表的列
    • MYSQL查询时间数据
    • MYSQL随机抽取查询 MySQL Order By Rand()效率问题
    • PHP合并2个数字键数组值示例详解
    • 什么是blob,mysql blob大小配置介绍
    • linux装mysql问题
    • MySQL查看数据库表容量大小
    • mysql 数据库中my.ini的优化 2G内存针对站多 抗压型的设置
    • mysql数据迁移到Oracle的图文代码分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有