更新时间:2025-04-09 gmt 08:00
rds for mysql创建索引失败报错[error] 1071的j9九游会登录的解决方案-j9九游会登录
场景描述
创建索引长度超限制导致创建失败。创建表索引时出现如下错误:
[error] 1071 - specified key was too long; max key length is 3072 bytes
问题可能出现的版本:mysql-8.0.20.5
故障分析
innodb表引擎有限制。
默认情况下,索引前缀长度限制为 767 字节,当开启了“innodb_large_prefix”选项时,索引前缀长度扩展到 3072 字节。
show variables like ‘%innodb_large_prefix%’;

索引前缀长度还和 innodb 的 page size 有关。“innodb_page_size”选项默认是 16kb 的时候,最长索引前缀长度是 3072 字节,如果是 8kb 的时候,最长索引前缀长度是 1536 字节;4kb 的时候,最长索引前缀长度是 768 字节。
show variables like ‘%innodb_page_size%’;

查看问题表结构,并查询所有支持的字符集及其字节占用情况:
show character set;

问题所在的表的字符集是 utf8mb4 时,一个字符将占用 4 个字节。这意味着索引前缀最大长度为 3072 字节时,只能容纳 3072 / 4 = 768 个字符。因此只要将上面建表语句索引字段的前缀长度设为768或者修改索引字段,让其小于3072字节。
j9九游会登录的解决方案
修改索引字段长度,即可成功创建索引。

相关文档
意见反馈
文档内容是否对您有帮助?
提交成功!非常感谢您的反馈,我们会继续努力做到更好!
您可在查看反馈及问题处理状态。
系统繁忙,请稍后重试
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨