【MySQL】1709 - Index column size too large. The maximum column size is 767 bytes.

307 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1.问题重现

CREATE TABLE `xxl_job_registry` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `registry_group` varchar(50) NOT NULL,
  `registry_key` varchar(255) NOT NULL,
  `registry_value` varchar(255) NOT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `i_g_k_v` (`registry_group`,`registry_key`,`registry_value`,`update_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
> 1709 - Index column size too large. The maximum column size is 767 bytes.
> 时间: 0.009s

修改了KEY的值,使用id是可以的,说明是真的超出了长度。

2.解决方法

将 CHARSET=utf8mb4 改为 CHARSET=gbk 解决了这个问题,但不知道有没有意外的惊喜

CREATE TABLE `xxl_job_registry` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `registry_group` varchar(50) NOT NULL,
  `registry_key` varchar(255) NOT NULL,
  `registry_value` varchar(255) NOT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `i_g_k_v` (`registry_group`,`registry_key`,`registry_value`,`update_time`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk
> OK
> 时间: 0.009s