MySQL:Specified key was too long; max 1000

2025-10-25 02:18:13

1、mysql 错误提示: 

[SQL]CREATE TABLE IF NOT EXISTS websites (

  id bigint(20) unsigned NOT NULL auto_increment,

  `date` varchar(100) NOT NULL default '0000-00-00',

  site varchar(255) NOT NULL default '',

  did varchar(255)  ,

  groupid varchar(255) NOT NULL ,

  PRIMARY KEY  (id),

  UNIQUE KEY date_site_groupid (`date`,site,groupid)

);

[Err] 1071 - Specified key was too long; max key length is 1000 bytes

2、问题分析:

建立索引时,数据库计算key的长度是累加所有Index用到的字段的char长度后再按下面比例乘起来不能超过限定的key长度1000: latin1 = 1 byte = 1 character uft8 = 3 byte = 1 character gbk = 2 byte = 1 character 

上步骤语句中索引总长度(100+255+255) * 2 = 1220 > 1000

找到了问题所在。

3、问题解决:

修改sql语句:

CREATE TABLE IF NOT EXISTS websites (

  id bigint(20) unsigned NOT NULL auto_increment,

  `date` varchar(50) NOT NULL default '0000-00-00',

  site varchar(255) NOT NULL default '',

  did varchar(50)  ,

  groupid varchar(50) NOT NULL ,

  PRIMARY KEY  (id),

  UNIQUE KEY date_site_groupid (`date`,site,groupid)

);

这样问题就解决了。(^_^)

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢