MySQL錯誤“Specified key was too long; max key length is 1000 bytes”的解決辦法
更新時間:2010年08月08日 12:59:27 作者:
今天在為數(shù)據庫中的某兩個字段設置unique索引的時候,出現(xiàn)了Specified key was too long; max key length is 1000 bytes錯誤
經過查詢才知道,是Mysql的字段設置的太長了,于是我把這兩個字段的長度改了一下就好了。
建立索引時,數(shù)據庫計算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ù)據庫計算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服務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服務器登陸故障ERROR 1820 (HY000)的解決方法
相關文章
Mysql systemctl start mysqld報錯的問題解決
最近運行Mysql發(fā)現(xiàn)報錯,本文就來介紹一下Mysql systemctl start mysqld報錯的問題解決,需要的朋友們下面隨著小編來一起學習學習吧2021-06-06mysql中數(shù)據庫與數(shù)據表編碼格式的查看、創(chuàng)建及修改
這篇文章給大家介紹了如何查看、創(chuàng)建以及修改數(shù)據庫與數(shù)據表的編碼格式,另外還給大家分享了添加和刪除外鍵的示例代碼,文中介紹的很詳細,對大家的理解和學習具有一定的參考借鑒價值,有需要的朋友們下面來一起學習學習吧。2016-11-11mysqldump備份還原和mysqldump導入導出語句大全詳解
這篇文章主要介紹了mysqldump備份還原和mysqldump導入導出語句大全詳解,需要的朋友可以參考下2014-05-05mysql啟動時報錯:error while loading shared li
這篇文章主要給大家介紹了解決mysql啟動時報錯:error while loading shared libraries: libncurses.so.5: cannot open shared object file的方法,需要的朋友可以參考下2023-08-08