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

