开发者社区> 问答> 正文

PolarDB MySQL提示Index column size too large. The...

已解决

PolarDB MySQL提示Index column size too large. The maximum column size is 767 bytes

展开
收起
提个问题 2024-06-13 11:03:14 29 0
1 条回答
写回答
取消 提交回答
  • 开发者社区问答官方账号
    官方回答
    采纳回答
    问题现象
    PolarDB MySQL 5.6和PolarDB MySQL5.7 在大字段上创建索引时,偶尔可能会遇到如下错误:
    ERROR 1709 (HY000): Index column size too large. The maximum column size is 767 bytes.

    可能原因
    由于MySQL的InnoDB引擎表索引字段长度的限制为767字节,因此对于多字节字符集的大字段或者多字段组合,创建索引时会出现该问题。
    说明 注:以utf8mb4字符集字符串类型字段为例。utf8mb4是4字节字符集,默认支持的索引字段最大长度是191字符(767字节/4字节每字符≈191字符),因此在varchar(255)或char(255)类型字段上创建索引会失败。详情请参见MySQL官网文档

    解决方案
    1. 在控制台的参数设置里修改参数innodb_large_prefix为ON或者1(参数默认是ON),然后单击提交参数。
    2.  创建表的时候指定表的row_format格式为Dynamic或者Compressed,示例如下:
    create table idx_length_test_02 ( id int auto_increment primary key, name varchar(255) ) ROW_FORMAT=DYNAMIC default charset utf8mb4;
    说明 对已经创建的表,修改表的row_format格式命令如下:
    alter table <表名> row_format=dynamic; 
    alter table <表名> row_format=compressed;

    2024-06-13 11:03:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载
2023云栖大会:和客户一起玩转PolarDB新特性 立即下载
2023云栖大会:PolarDB for AI 立即下载

相关镜像