使用新版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自建數據庫)。
文檔內容是否對您有幫助?