MYSQL : ERROR 1118 (42000): Row size too large.

文章讲述了在创建MySQL表时遇到RowsizeTooLarge错误的解决方案,涉及字段类型调整(如将长字段转为TEXT或BLOBs),以及注意utf8与utf8mb4字符集对字节长度的影响。特别指出,当使用utf8mb4时,由于每个字符占用4个字节,可能导致超过最大行大小限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错信息如下:

ERROR 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

报错的信息很简单,就是创建表的时候,所有字段的字节长度加起来超过了65535

解决的办法就是:
将长的字段格式改成longtext 或者是 longblob

这两个类型的区别是:如果存放二进制文件就用longblob,如果存放长文本,就用longtext

到这里基本能解决了

!!!

如果还是爆超长,则需要查看数据库的字符集类型
需要注意一下字符集:

utf8与utf8mb4区别

utf8 使用1~4个字节,一种变长的编码格式,字符编码。utf8mb4 即most bytes 4,使用4个字节来表示完整的UTF-8

结论:如果数据库的字符集是utf8mb4,那就改成utf8,嗯,排序规则也改 ,65535其实是字节长度,如果是utf8mb4,会算成4个字节,很容易就会超长。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值