MySQL ERROR 1071 (42000): Specified key was too...

        今天在使用mysql新建立表时报Specified key was too long; max key length is 767 bytes  。
        该问题是由键值字段长度过长致使。mysql支持数据库表单一键值的最大长度不能超过767字节,超出这个长度即报错(见标题名称)。通常状况下,不会有键值字段的长度会超出该长度。可是须要注意的是,随着全球化进程的加快,数据库表采用UTF-8格式的趋势是愈来愈明显,这致使varchar类型字段的长度成倍增加,一不当心就容易出现以上问题。
        假设存在如下表定义:
        create table test (
                name varchar(256) not null primary key,
                age int unsigned not null
        ) engine = InnoDB;
        当使用UTF-8且在innodb格式创建该表时,就会出现如标题所示问题。关键缘由是UTF-8使用变长编码,最多可能使用3个字节表示表示1个符号。因此对于上述表中的name字段,其实际长度超出767字节,达到了768字节,问题出现。若是把长度改成255则没有问题,或者不使用utf-8格式也没有问题,再或把engine修改成MyISAM也能够。
相关文章
相关标签/搜索