该报错一般出现在其它数据库引擎往MySQL数据库迁移的场景下。
MySQL数据库支持的最大索引长度是3072字节,超出了就会报如下错误:
Specied key was too long; max key length is 3072 byte.
当MySQL中如果使用了BOLB、TEST或者其变体(如TINYBLOB)类型作为索引键的时候,必须指定一个索引长度,否则会报错如下:
BLOB/TEXT column 'xxx' used in key specification without a key length
如上报错可以考虑采用如下解决方案:
方案一:
删除或者修改源端索引长度,超长字段可以使用前缀索引,修改完成后再配置DTS任务。
方案二:
1、创建DTS任务,先进行结构迁移,把不包含长索引的表先使用DTS迁移到目标端,然后手动把比较长的索引所在的表手动在目标端创建。
2、再配置DTS任务,这时因为第一步的时候已经把表结构迁移过去了,所以再次创建DTS任务,只勾选全量+增量即可。
注意:采用方案二的话,后期在源端数据库创建新表,如是DTS迁移任务新表无法迁移到目标端,如果是DTS同步任务,需要手动在目标端创建该表,然后手动修改同步对象,把该表加上。