mysql 建表提示: Specified key was too long; max key length is 767 bytes
这是那段代码:CREATETABLE`t_order`(`id`varchar(255)NOTNULL,`bianhao`varchar(255)defaultNULL,...
这是 那段代码:
CREATE TABLE `t_order` (
`id` varchar(255) NOT NULL,
`bianhao` varchar(255) default NULL,
`shijian` varchar(255) default NULL,
`zhuangtai` varchar(255) default NULL,
`songhuodizhi` varchar(255) default NULL,
`fukuanfangshi` varchar(255) default NULL,
`jine` int(11) default NULL,
`user_id` varchar(255) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
但是 前面几个表没有出现这个问题 展开
CREATE TABLE `t_order` (
`id` varchar(255) NOT NULL,
`bianhao` varchar(255) default NULL,
`shijian` varchar(255) default NULL,
`zhuangtai` varchar(255) default NULL,
`songhuodizhi` varchar(255) default NULL,
`fukuanfangshi` varchar(255) default NULL,
`jine` int(11) default NULL,
`user_id` varchar(255) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
但是 前面几个表没有出现这个问题 展开
4个回答
展开全部
字段设置unique索引的时候,是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)那么索引就能成功建立。
建立索引时,数据库计算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)那么索引就能成功建立。
展开全部
指定的长度太长了,你看看哪个超过了767,MySQL的varchar主键只支持不超过768个字节 或者 768/2=384个双字节 或者 768/3=256个三字节的字段
而 GBK是双字节的,UTF-8是三字节的。
而 GBK是双字节的,UTF-8是三字节的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Mysql的字段设置的太长。
建立索引时,数据库计算key的长度是累加所有Index用到的字段的char长度;再按下面比例相乘不能超过限定的key长度1000:
latin1=1 byte=1 character;
uft8=3 byte=1 character;
gbk=2 byte=1 character。解决方法:
修改字段长度;
修改mysql默认的存储引擎。
参考资料
mysql:Specified key was too long; max key leng报错问题-问答-云栖社....阿里云[引用时间2017-12-29]
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询