今天覆制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。