概述
使用新版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自建数据库)。