使用新版DMS控制台进行变更时提示“Duplicate entry: XXXX”

概述

使用新版DMS控制台变更RDS MySQL实例或自建MySQL数据库(ECS自建数据库或IDC自建数据库)时,出现类似如下报错。

Duplicate entry: XXXX

详细信息

问题场景 问题原因 解决方法
此问题在您使用数据变更功能进行DML操作(insert、update)时会出现。 表中存在的唯一约束或唯一索引已有对应数据。

确认唯一约束或唯一索引的合理性,实例已有的唯一键值数据是否合理(数据是否可以清理),若均合理的话可以确认当前需求是否可以调整。

使用结构设计功能进行DDL操作时会出现该问题。例如添加唯一约束或唯一索引、调整唯一约束或唯一索引(包含调整唯一约束或唯一索引内的组成字段)的DDL操作。 对数据表调整或新增的唯一约束或唯一索引已存在重复数据。 确认唯一约束或唯一索引的合理性,若合理则需要先清理好重复数据,然后重新执行失败的任务。
使用结构设计功能进行不涉及唯一约束或唯一索引组成字段调整的DDL操作。 该问题会出现在MySQL的online DDL机制在目标表存在高并发访问的场景。

说明:唯一索引的冲突计算规则包含在索引定义内的长度,即假如字段定义为“name  varchar(255)”,且定义在该字段上的唯一索引定义了前缀为“uk(name(5))”,那么表上存在“name='abcdef.........'”记录时,再写入“name='abcdef'”后,就会因为前5个字符相同导致写入数据失败。

适用于

  • 数据管理DMS
  • 云数据库RDS
    说明:本文适用于RDS MySQL实例或自建MySQL数据库(ECS自建数据库或IDC自建数据库)。