MySQL:Specified key was too long; max 1000
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)
);
这样问题就解决了。(^_^)