MySQL錯誤“Specified key was too long; max key length is 1000 bytes”的解決辦法
更新時間:2010年08月08日 12:59:27 作者:
今天在為數(shù)據(jù)庫中的某兩個字段設(shè)置unique索引的時候,出現(xiàn)了Specified key was too long; max key length is 1000 bytes錯誤
經(jīng)過查詢才知道,是Mysql的字段設(shè)置的太長了,于是我把這兩個字段的長度改了一下就好了。
建立索引時,數(shù)據(jù)庫計算key的長度是累加所有Index用到的字段的char長度后再按下面比例乘起來不能超過限定的key長度1000:
latin1 = 1 byte = 1 character
uft8 = 3 byte = 1 character
gbk = 2 byte = 1 character
舉例能看得更明白些,以GBK為例:
CREATE UNIQUE INDEX `unique_record` ON reports (`report_name`, `report_client`, `report_city`);
其中report_name varchar(200), report_client varchar(200), report_city varchar(200)
(200 + 200 +200) * 2 = 1200 > 1000,所有就會報1071錯誤,只要將report_city改為varchar(100)那么索引就能成功建立。
如果表是UTF8字符集,那索引還是建立不了。
建立索引時,數(shù)據(jù)庫計算key的長度是累加所有Index用到的字段的char長度后再按下面比例乘起來不能超過限定的key長度1000:
latin1 = 1 byte = 1 character
uft8 = 3 byte = 1 character
gbk = 2 byte = 1 character
舉例能看得更明白些,以GBK為例:
CREATE UNIQUE INDEX `unique_record` ON reports (`report_name`, `report_client`, `report_city`);
其中report_name varchar(200), report_client varchar(200), report_city varchar(200)
(200 + 200 +200) * 2 = 1200 > 1000,所有就會報1071錯誤,只要將report_city改為varchar(100)那么索引就能成功建立。
如果表是UTF8字符集,那索引還是建立不了。
您可能感興趣的文章:
- MySQL錯誤ERROR 2002 (HY000): Can''t connect to local MySQL server through socket
- mysql服務(wù)1067錯誤多種解決方案分享
- mysql中You can’t specify target table for update in FROM clause錯誤解決方法
- MySQL錯誤代碼大全
- MySQL 5.6 中TIMESTAMP with implicit DEFAULT value is deprecated錯誤
- linux下mysql提示"mysql deamon failed to start"錯誤的解決方法
- MySQL錯誤TIMESTAMP column with CURRENT_TIMESTAMP的解決方法
- mysql "too many connections" 錯誤 之 mysql解決方法
- mysql 發(fā)生系統(tǒng)錯誤1067的解決方法
- MySQL服務(wù)器登陸故障ERROR 1820 (HY000)的解決方法
相關(guān)文章
Mysql 如何實現(xiàn)多張無關(guān)聯(lián)表查詢數(shù)據(jù)并分頁
這篇文章主要介紹了Mysql 實現(xiàn)多張無關(guān)聯(lián)表查詢數(shù)據(jù)并分頁的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
MySQL SHOW PROCESSLIST協(xié)助故障診斷全過程
這篇文章主要給大家介紹了關(guān)于MySQL SHOW PROCESSLIST協(xié)助故障診斷的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-02-02
MySQL如何實現(xiàn)快速插入大量測試數(shù)據(jù)
這篇文章主要介紹了MySQL如何實現(xiàn)快速插入大量測試數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11

