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)過查詢才知道,是Mysql的字段設(shè)置的太長(zhǎng)了,于是我把這兩個(gè)字段的長(zhǎng)度改了一下就好了。
建立索引時(shí),數(shù)據(jù)庫(kù)計(jì)算key的長(zhǎng)度是累加所有Index用到的字段的char長(zhǎng)度后再按下面比例乘起來不能超過限定的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)度后再按下面比例乘起來不能超過限定的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 systemctl start mysqld報(bào)錯(cuò)的問題解決
最近運(yùn)行Mysql發(fā)現(xiàn)報(bào)錯(cuò),本文就來介紹一下Mysql systemctl start mysqld報(bào)錯(cuò)的問題解決,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06mysql中數(shù)據(jù)庫(kù)與數(shù)據(jù)表編碼格式的查看、創(chuàng)建及修改
這篇文章給大家介紹了如何查看、創(chuàng)建以及修改數(shù)據(jù)庫(kù)與數(shù)據(jù)表的編碼格式,另外還給大家分享了添加和刪除外鍵的示例代碼,文中介紹的很詳細(xì),對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,有需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11mysqldump備份還原和mysqldump導(dǎo)入導(dǎo)出語句大全詳解
這篇文章主要介紹了mysqldump備份還原和mysqldump導(dǎo)入導(dǎo)出語句大全詳解,需要的朋友可以參考下2014-05-05mysql啟動(dòng)時(shí)報(bào)錯(cuò):error while loading shared li
這篇文章主要給大家介紹了解決mysql啟動(dòng)時(shí)報(bào)錯(cuò):error while loading shared libraries: libncurses.so.5: cannot open shared object file的方法,需要的朋友可以參考下2023-08-08MySQL優(yōu)化全攻略-相關(guān)數(shù)據(jù)庫(kù)命令
MySQL優(yōu)化全攻略-相關(guān)數(shù)據(jù)庫(kù)命令...2006-11-11