在DMS中为MySQL建立索引时出现“Specified key was too long; max key length is 767 bytes”报错
更新时间:
问题描述
在阿里云DMS中为InnoDB引擎的MySQL数据库建立索引时,出现类似以下报错。
Specified key was too long; max key length is 767 bytes
问题原因
以MySQL的varchar、char等字符串类型字段作为索引时,单个索引字段存储长度超过了767字节。
解决方法
请根据实际情况选择对应的解决方法:
启用innodb_large_prefix参数
如果您使用的是云数据库RDS,可以在RDS控制台中将innodb_large_prefix参数修改为ON,详情请参见RDS MySQL提示“Specified key was too long; max key length is 767 bytes”。
减小字段存储长度
请根据实际情况将字段存储长度设置为正常的长度:
- 登录DMS控制台。
更多信息
以InnoDB为引擎的MySQL建立索引时,单个最大索引字段存储长度为767。不同字符集的最大单个索引字段存储长度不同。因此,需要根据不同字符集修改对应字符串类型字段的前缀索引长度。以下是不同字符集定义前缀索引长度的方法。
- UTF-8MB4
按照表为UTF-8MB4字符集的标准,单个字符需要4个字节进行存储,则最大定义索引前缀需设置为191,具体计算方法如下。767/4=191
- UTF-8
按照表为UTF-8字符集的标准,单个字符需要3个字节进行存储,则最大定义索引前缀需设置为255,具体计算方法如下。767/3=255
- GBK
按照表为GBK字符集的标准,单个字符需要2个字节进行存储,则最大定义索引前缀需设置为383,具体计算方法如下。767/2=383
适用于
- 数据管理DMS
文档内容是否对您有帮助?