Error Code: 1071. Specified key was too long;

探讨了在MySQL中遇到的错误代码1071,即主键长度超过767字节的问题,特别是在使用UTF8编码时。通过调整varchar字段长度从256到255解决了该问题。

错误信息

Error Code: 1071. Specified key was too long; max key length is 767 bytes

表结构

CREATE TABLE yundou_data_system.`object_event` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `object_id` int(11) unsigned NOT NULL DEFAULT '0',
  `event_name` varchar(256) NOT NULL DEFAULT '',
  `create_time` int(11) unsigned NOT NULL DEFAULT '0',
  `status` tinyint(1) unsigned NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`),
  UNIQUE KEY `unq_event_name` (`event_name`),
  KEY `idx_object_id` (`object_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='对象事件表'

原因
mysql的varchar主键只支持不超过767个字节或者768/2=384个双字节 或者767/3=255个三字节的字段 而GBK是双字节的,UTF8是三字节的。

解决方案

`event_name` varchar(255) NOT NULL DEFAULT '',

转载于:https://blog.51cto.com/phpme/2351676

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值