【MySql】Specified key was too long; max key length is 767 bytes的解决方案

问题描述:

今天在执行SQL 命令时,报了上面的错误,

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

是因为索引过长导致的,最长索引不要超过767 字节。

解决思路:

一,先检查一下是不是数据库被限制了索引的大小,查询innodb_large_prefix这个字段,这个字段限制了索引前缀的大小。关闭此限制后,索引前缀的大小将可以达到3072字节

SHOW variables like 'innodb_large_prefix';

如果查询的值是OFF的话 执行下面命令

SET GLOBAL INNODB_LARGE_PREFIX = ON;
 

另外,innodb_large_prefix这个属性在5.6上是默认关闭的,而在5.7上是默认开启的。我执行的sql 就是从MySQL5.7上导出的,但是在5.5 就运行报错了。

二,执行完上面的sql后,再次执行sql 语句,报错

Index column size too large. The maximum column size is 767 bytes.

还是索引太长了。可以执行sql

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vegetari

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值