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%'