Specified key was too long; max key length is 767 bytes解决方案

公司使用的mysql数据库版本是5.6.51

在使用navicat或者直接使用mysql客户端命令行往mysql里边导入运行sql语句时候,总是提示Specified key was too long; max key length is 767 bytes

导致上面报错的原因是由于InnoDB表的索引长度限制,在MySQL5.6版本后引入了参数innodb_large_prefix可以解决这个问题。该参数控制是否允许单列的索引长度超过767字节,有ON和OFF两个取值:

ON :Innodb表的行记录格式是Dynamic或Compressed的前提下,单列索引长度上限扩展到3072个字节
OFF:Innodb表的单例索引长度最多为767个字节,索引长度超出后,主键索引会创建失败,辅助索引会被截断成为前缀索引

Between 5.6.3 and 5.7.7 

设置mysql的innodb参数:

set global innodb_large_prefix = ON;

SET GLOBAL innodb_file_format=Barracuda;

 SET GLOBAL innodb_file_per_table=ON;

使用客户端命令行设置上边那几个参数

然后在对应的schema(use database_name)下,使用source命令再次导入sql文件或者在navicat中执行sql语句,成功 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值