MySQL错误“Specified key was too long; max key length is 1000 bytes”的解决办法

Caltha ·
更新时间:2024-09-20
· 823 次阅读

经过查询才知道,是Mysql的字段设置的太长了,于是我把这两个字段的长度改了一下就好了。
建立索引时,数据库计算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 socketmysql服务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 发生系统错误1067的解决方法MySQL服务器登陆故障ERROR 1820 (HY000)的解决方法



max length LONG IS bytes key Mysql

需要 登录 后方可回复, 如果你还没有账号请 注册新账号