更新时间:2024-11-26 gmt 08:00
oracle到mysql迁移时,索引超长如何处理-九游平台
索引长度说明
mysql引擎对索引长度有一些限制,最主要的因素就是存储引擎和字符集。不同的字符集,单个字符包含的最大字节数有所不同。例如utf8字符集,一个字符最多包含3个字节。而utf8mb4一个字符最多包含 4 个字节。
引擎 |
mysql版本 |
字符集 |
最大字节数 |
单字段索引最大字符数 |
联合索引合计最大字符数 |
---|---|---|---|---|---|
innodb |
mysql 5.7.6及以下版本 |
utf8mb4 |
4 |
191 |
768 |
mysql 5.7.7及以上版本 |
utf8mb4 |
4 |
768 |
768 |
索引超长的处理方法
- 方法一
不迁移含有超长索引的表。
- 方法二
修改源库索引长度满足以上索引长度说明中的要求,该操作可能导致迁移后数据不完整,请谨慎使用。以目标库为mysql 5.7.6及以下版本的utf8mb4为例,可通过如下方式修改长度。
alter table tablename modify columnname varchar2 (768) ;
其中,tablename请用实际表名代替,columnname请用实际列名代替。
- 方法三
在源库删除该索引及其约束。以目标库为mysql 5.7.6及以下版本的utf8mb4为例,可通过如下方式删除索引及其约束。
drop index indexname; alter table tablename drop constraint constraintname;
其中,indexname请用实际索引名代替,tablename请用实际表名代替,constraintname请用实际约束名代替。
父主题:
相关文档
意见反馈
文档内容是否对您有帮助?
提交成功!非常感谢您的反馈,我们会继续努力做到更好!
您可在查看反馈及问题处理状态。
系统繁忙,请稍后重试
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨