bestjoe 发表于 2016-10-22 08:30:28

MySQL ERROR 1071 (42000): Specified key was too long; max key length is 767 byte

转载自
  http://www.java2000.net/p14993
我们这个测试,
drop table if exists test;
create table test(test varchar(767) primary key)charset=latin5;
-- 成功


drop table if exists test;
create table test(test varchar(768) primary key)charset=latin5;
-- 错误
-- ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

drop table if exists test;
create table test(test varchar(383) primary key)charset=GBK;
-- 成功


drop table if exists test;
create table test(test varchar(384) primary key)charset=GBK;
-- 错误
-- ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

drop table if exists test;
create table test(test varchar(255) primary key)charset=UTF8;
-- 成功


drop table if exists test;
create table test(test varchar(256) primary key)charset=UTF8;
-- 错误
-- ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes



如果你还看不错区别,那我只要明说了。
MySQL的varchar主键只支持不超过768个字节 或者 768/2=384个双字节 或者 768/3=256个三字节的字段
而 GBK是双字节的,UTF-8是三字节的。 MySQL ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes 的原因分析
  
页: [1]
查看完整版本: MySQL ERROR 1071 (42000): Specified key was too long; max key length is 767 byte