too many columns

1.概要

too many columns

太多的列

2.原因分析

现场执行1379列的创建表的SQL语句,执行时报错Too many columns。删除comment后,可以建表成功。

集群在进行建表操作时,除了表列数不能超过2000列的限制以外,还存在额外的限制:表的元数据信息不能超过64K字节长度。
现场的问题就是遇到了表元数据信息不能超过64K字节长度的限制。
元数据信息包括:列名,列定义信息,列注释信息等。
简单计算公式为:
列数量*(列名长度字节数+列注释长度字节数 + 19字节)+288字节 < 64K 字节
即如果想要创建2000列的表,列名和注释的长度总和不能超过13个字节。
解决方案:
建议用户合理规划表的结构,列名长度限制到13个字符以内,不使用表注释,不使用enmu和set列时,可以创建出达到2000列的表。
除了上述限制以外,还存在的建表的限制有:
(1)表的单列定义宽度小于32K字节
(2)表的单行定义长度小于30万字节
另:
导致8a集群出现Too many columns的报错信息的原因主要有以下几种:
(1)Alter table修改列的次数过多,导致列编号超过99999
(2)表的列数量超过2000列
(3)表定义中存在的enum和set类型超过255个
(4)表的元数据信息的长度总和超过64K字节
表的元数据信息包括:
(1)列名
(2)列类型信息
(3)列注释信息
(4)Enum和set类型列定义信息
(5)其他元数据信息
元数据信息长度的计算公式为:
其他元数据信息长度+所有列注释长度+所有enum和set定义信息长度+所有列列名长度+列数量*17+288 < 65535

3.异常截取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值