MySQL:SQL 错误 [1118] [42000]: Row size too large.

1.场景:

今天在用MySQL建表的时候,报了一个错误;

SQL 错误 [1118] [42000]: 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

2.原因:

从字面的意思理解就是【所用表类型(不包括 BLOBs)的最大行大小为 65535,您必须将某些列更改为TEXT或 BLOBs】;

1.如果数据库编码为utf8mb4,表所有varchar字段总长度(Length):Length*4不能大于65535;

2.如果数据库编码为utf8,表所有varchar字段总长度(Length):Length*3不能大于65535;

3.解决方案:

将建表SQL中varchar长度比较大(比如超过2000)的字段,类型修改为TEXT,避免varchar总长度超过65535即可;

4.相似异常:

Specified key was too long; max key length is 3072 bytes

这种报错往往出现在MySQL创建联合索引的时候,MySQL的联合索引所有字段的长度不能超过3072,修改字段长度即可。

 

 

select COLUMN_NAME,COLUMN_TYPE from information_schema.columns where table_name ='t_advice_core' order by `ORDINAL_POSITION`
SHOW VARIABLES LIKE 'character_set%'

posted @   zhaoguanhao  阅读(2482)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示