• 首页 > 
  • 数据库返回“Row size too large. ”报错

数据库返回“Row size too large. ”报错

KB: 188724

 · 

更新时间:2020-11-10 15:25

问题描述

在DMS控制台中对RDS实例或自建MySQL数据库(ECS自建数据库或IDC自建数据库)执行SQL语句时,出现类似如下报错。

Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs

问题原因

MySQL限制了单行的长度(65535字节),无论InnoDB存储引擎是否支持更大的存储,都会强制执行该限制,详情请参见MySQL官方文档

解决方案

您可以根据实际情况,通过以下方法解决问题:

  • 将表上一些varchar类型的大字段改为text或者blob类型的小字段。
    1. 登录DMS控制台,选择目标实例,选择目标库,然后右键单击目标表,选择编辑表结构
    2. 单击列信息,根据实际情况,调整目标列的类型。
  • 将表上一些varcahr类型的大字段根据业务实际需求缩小长度定义,节省行长。
    1. 登录DMS控制台,选择目标实例,选择目标库,然后右键单击目标表,选择编辑表结构
    2. 单击列信息,根据实际情况,调整目标列的长度。

适用于

  • 数据管理DMS
  • 云数据RDS
    说明:本文问题同样适用于自建MySQL数据库,即ECS自建数据库和IDC自建数据库。