文档首页> 数据复制服务 DRS> 故障排除> 失败案例> MySQL->GaussDB(for MySQL)实时迁移和同步> 全量或增量阶段失败报错,关键词“Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation”
更新时间:2023-09-06 GMT+08:00

全量或增量阶段失败报错,关键词“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,字符集排序规则不一致的报错。

解决方案

  • 方法一:
    1. 在目标库执行对应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;
    2. 修改完成后,在任务列表中,单击任务对应操作列的“续传”,重新提交任务。
  • 方法二:
    1. 修改源库表结构,将表中带有collate utf8mb4_general_ci 的列都去掉。
    2. 修改完成后,在任务列表中,单击任务对应操作列的“重置”,重新开始任务;或重新创建DRS任务进行迁移。
  • 方法三:
    1. 在目标库执行对应SQL语句,将目标库字符排序规则修改为utf8mb4_0900_ai_ci
      SET GLOBAL default_collation_for_utf8mb4='utf8mb4_general_ci';
    2. 修改完成后,在任务列表中,单击任务对应操作列的“重置”,重新开始任务;或重新创建DRS任务进行迁移。