建表语句错误:[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.在...
·
今天复制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。
更多推荐
所有评论(0)