在DMS中对数据库执行SQL时,出现“Row size too large”报错

问题描述

通过DMS控制台对RDS MySQL或自建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或char类型的大字段改为text或blob类型的小字段。

    1. 登录DMS控制台

    2. 在左侧数据库实例区域,展开目标数据库实例,单击目标数据库。

    3. 进入SQL Console页面,右键单击目标表,选择编辑表结构

    4. 在编辑表页面,单击列信息页签,调整目标列的类型。

  • 缩短大字段长度。根据实际业务需求,缩短表中varchar或char类型的大字段长度。

    1. 登录DMS控制台

    2. 在左侧数据库实例区域,展开目标数据库实例,单击目标数据库。

    3. 进入SQL Console页面,右键单击目标表,选择编辑表结构

    4. 在编辑表页面,单击列信息页签,调整目标列的长度。

适用于

  • 数据管理DMS

  • 云数据RDS