建表语句错误:[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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章