全量或增量阶段失败报错,关键词“Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation”
场景描述
全量或增量阶段,DRS迁移或同步任务报错,日志提示信息:Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation
可能原因
客户源端MySQL为5.*版本字符集utf8mb4排序规则为utf8mb4_general_ci,而目标端GaussDB(for MySQL)字符集utf8mb4排序规则为utf8mb4_0900_ai_ci,字符集排序规则不一致的报错。
解决方案
- 方法一:
- 在目标库执行对应SQL语句,将对应列的字符排序规则修改为utf8mb4_0900_ai_ci。例如,将表test_collation_1 的c1列的字符排序规则修改为utf8mb4_0900_ai_ci:
ALTER TABLE test_collation_1 MODIFY COLUMN c1 VARCHAR(16) COLLATE utf8mb4_0900_ai_ci;
- 修改完成后,在任务列表中,单击任务对应操作列的“续传”,重新提交任务。
- 在目标库执行对应SQL语句,将对应列的字符排序规则修改为utf8mb4_0900_ai_ci。例如,将表test_collation_1 的c1列的字符排序规则修改为utf8mb4_0900_ai_ci:
- 方法二:
- 修改源库表结构,将表中带有collate utf8mb4_general_ci 的列都去掉。
- 修改完成后,在任务列表中,单击任务对应操作列的“重置”,重新开始任务;或重新创建DRS任务进行迁移。
- 方法三:
- 在目标库执行对应SQL语句,将目标库字符排序规则修改为utf8mb4_0900_ai_ci
SET GLOBAL default_collation_for_utf8mb4='utf8mb4_general_ci';
- 修改完成后,在任务列表中,单击任务对应操作列的“重置”,重新开始任务;或重新创建DRS任务进行迁移。
- 在目标库执行对应SQL语句,将目标库字符排序规则修改为utf8mb4_0900_ai_ci