mysql varchar最大长度_详解mysql修改字符编码报错超出单行最大长度解决方法

概述

最近在修改数据库编码时发现超出单行最大长度,下面记录下解决过程,以作备忘!

08cd6f59a2caf0918c69dad88e89c3cd.png

> 1118 - 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


思路:

473812c5f14937d2cd0ee7b7c6d12f4d.png

MySQL要求一个行的定义长度不能超过65535。

(1)单个字段如果大于65535,则转换为TEXT 。

(2)单行最大限制为65535,这里不包括TEXT、BLOB。

所谓单行最大限制指的就是一张表中所有字段的所设置的长度不得超过65535字节,

例如一个表中有三个varchar字段长度30000,那么这个表的单行长度为:30000*3=90000,大于65535则报错不能建表,这里乘以3是因为数据库用的utf8编码,3个字节表示一个字符。

而utf8mb4(mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。),也就是4个字节表示一个字符,比utf8占用更多存储空间,所以在这里修改编码的时候就报错。

最大问题是还是合理建表,不要建太多字段,或者字段类型设置太长了,像这样设置了太大的字段长度会导致最后超出表长度。


解决:

调整长度为8100

d4ee8a35d536fb3d92a398971e3a92d0.png

测试如下:

2afb047c33818004bcf5bab208f918cc.png

觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

d87398a13e509b9b25df52bbd2305e08.gif
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值