前言:最近在RDS上给某表某列建索引时报错,本文仅做记录一用
一、报错
ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.
二、分析
从报错提示看,mysql对列建索引已经超出了最大长度767字节,数据库字符集是utf8mb4,每个字符占用4个字节,我们算一下767/4=191字符,也就是说最多只能为196个字符长度的列建立索引,我们建立的索引列为vachar(255),显然已经超过长度限制了。
三、解决办法
设置innodb_large_prefix 为 ON;
创建表的时候指定表的 row format 格式为 Dynamic 或者 Compressed
修改现有表的row format
创建索引
注:将 Innodb_large_prefix 修改为 on 后,对于 Dynamic 和 Compressed 格式的InnoDB 引擎表,其最大的索引字段长度支持到 3072 字节