建表語句錯誤:[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。

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