MySQL报错 error(1071: Specified key was too long; max key length is 767 bytes)

error(1071: Specified key was too long; max key length is 767 bytes)

lastQuery: ALTER TABLE account MODIFY COLUMN name varchar(255) not null DEFAULT ‘’;.

name这个字段上是建了索引的。类型是varchar(255)
这个报错的意思是说name这个字段允许的字节总数已经超过了767,

首先这个255是代表字符数,不是字节总数。也就是说name最多能存放255个字符长的字符串。
每个name所占的字节总数是 字符总数 x 字符集里规定的每个字符所占的字节数。
比如说我MySQL数据库的字符集是utf8mb4,utf8mb4规定每个字符最多可以占四个字节, 比如一些很偏僻的汉字。
那么varchar(255)最大可以占到的字节总数是255 x 4 = 1020(字节)

1020已经大于767了

解决方法:
1、 将varchar(255)的255改成小于等于191都可以(255 / 4 = 191.75 )。

2、 换成其他字符集,比如utf8,utf8一个字符最多占3个字节。255 x 3 = 765(字节)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值