建表语句错误:[Err] 1071 - Specified key was too long; max key length is 767 bytes

今天复制quartz给出的sql在mysql执行。

[Err] 1071 - Specified key was too long; max key length is 767 bytes

主键字段过长。
1.在mysql 5.5.3之前,mysql的InnoDB引擎,要求设置的主键长度不得超过767bytes。
mysql的MyIsam引擎的主键长度不得超过1000 bytes。
2.在mysql中,gbk字符集会占用2个字节。utf8字符会占用3个字节。
而且从mysql5.5.3之后的版本,mysql 开始支持utf8m4字符,代表着一个字符占用4个字节。

当时建库是用的utf8m4

(255+10+10)*3 = 825  //在用utf8作为字符集的时候,超过了规定的767 bytes
(255+10+10)*2 = 550  //当该用gbk作为字符集的时候
(255+10+10)*4 = 1100  //当用utf8m4作为字符集的时候,也超标了

 

解决方法把联合主键的长度变小点。当然这只适合练习用。

常规方法应该是升级mysql版本。

因为mysql5.7版本的字节最大长度为3072。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值