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

转载 2012年03月31日 12:52:08
MySQL错误“Specified key was too long; max key length is 1000 bytes”的解决办法
阅读:13次   时间:2011-12-02 05:16:06   字体:[大 中 小]
经过查询才知道,是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字符集,那索引还是建立不了。




4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 
5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节 
Mysql4中最大也不过是20个字节,但是Mysql5根据编码不同,存储大小也不同。 

【推荐】JAVA基础◆浅谈3DES加密解密

浅谈3DES加密解密 (注:本文不深入探讨3DES的加密原理,只着重说明在Java中使用3DES加密解密以及常见问题)   从数据安全谈起     当你使用网银时,是否担心你的银行卡会被盗用?    ...
  • AloneSword
  • AloneSword
  • 2013年09月12日 11:05
  • 5548

Android 平台DES IV 加密解密随笔

Android 平台DES IV 加密解密随笔 好记性不如烂笔头,所以开始写博客了,一方面加深自己的印象,另一方面给后面初学者参考,帮助少走弯路,不论难易,有些东西可能理解的不深,欢迎各位高手指导赐...
  • CSDN20na
  • CSDN20na
  • 2014年11月20日 10:18
  • 1905

Java加密算法DES

package com.stone.security; import java.security.Key; import javax.crypto.Cipher; import javax.cry...
  • jjwwmlp456
  • jjwwmlp456
  • 2014年03月10日 16:47
  • 6064

Java加密算法 AES

package com.stone.security; import java.util.Arrays; import javax.crypto.Cipher; import javax.cryp...
  • jjwwmlp456
  • jjwwmlp456
  • 2014年03月10日 23:23
  • 42523

[Python]实现DES加密算法和3DES加密算法

pyDes.py ############################################################################# # ...
  • sbdxxcjh
  • sbdxxcjh
  • 2014年08月09日 21:14
  • 1529

MySQL key_len 大小的计算

背景:       当用Explain查看SQL的执行计划时,里面有列显示了 key_len 的值,根据这个值可以判断索引的长度,在组合索引里面可以更清楚的了解到了哪部分字段使用到了索引。 环境:...
  • z69183787
  • z69183787
  • 2016年12月31日 13:00
  • 431

JAVA AES加密/解密

JAVA AES-CBC-128 加密解密
  • yuanfen97
  • yuanfen97
  • 2017年06月15日 22:33
  • 427

Java 进行 RSA 加解密时不得不考虑到的那些事儿

1. 加密的系统不要具备解密的功能,否则 RSA 可能不太合适公钥加密,私钥解密。加密的系统和解密的系统分开部署,加密的系统不应该同时具备解密的功能,这样即使黑客攻破了加密系统,他拿到的也只是一堆无法...
  • defonds
  • defonds
  • 2015年01月16日 11:56
  • 78356

[乐意黎原创]mysql中关键字key导致不能插入数据的问题

在mysql 中插入,无意中字段名称有 key, 试了半天,没见数据库中有插入记录。 如下: INSERT into jreport_nls.nlstable(key, value, version,...
  • aerchi
  • aerchi
  • 2016年12月16日 11:52
  • 1077

四种解决”Argument list too long”参数列表过长的办法

四种解决”Argument list too long”参数列表过长的办法 转自 http://hi.baidu.com/cpuramdisk/item/5aa49ce00c0757aecf2d4...
  • skykingf
  • skykingf
  • 2014年02月27日 17:03
  • 44886
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL错误“Specified key was too long; max key length is 1000 bytes”的解决办
举报原因:
原因补充:

(最多只允许输入30个字)