#1709 - Index column size too large. The maximum column size is 767 bytes.

2019-08-244699次阅读MySQL

因为带有utf8mb4字符集的VARCHAR(255)字段的大小最多为1020个字节。超过索引的767字节限制。简单的解决方法是将键/索引的大小限制为191 VARCHAR(764字节)。

 

1. 对数据库进行设置

set global innodb_file_format = BARRACUDA;
set global innodb_large_prefix = ON;

 

2. 对脚本进行修改,添加 ROW_FORMAT=DYNAMIC

例:

CREATE TABLE `categories` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `pid` int(11) unsigned DEFAULT '0',
  `slug` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `thumb_url` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '缩略图',
  `template` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT 'article' COMMENT '模板',
  `sort` int(11) unsigned DEFAULT '0' COMMENT '排序',
  `remark` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '备注',
  `status` smallint(6) DEFAULT '1' COMMENT '状态',
  `created_at` int(11) NOT NULL,
  `updated_at` int(11) NOT NULL,
  `deleted_at` int(11) NOT NULL DEFAULT '0',
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `slug` (`slug`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COLLATE=utf8mb4_unicode_ci;

 

上一篇: Express中设置404页面  下一篇: swig里PHP时间戳日期转换  

#1709 - Index column size too large. The maximum column size is 767 bytes.相关文章