MySQL ALTER TABLE報錯 Duplicate entry xxx for key PRIMARY解決方法

https://blog.csdn.net/u014609263/article/details/100199444

在MySQL中執行加字段等操作時可能會報Duplicate entry 'xxx' for key 'PRIMARY'的錯,例如:

mysql> alter table test add aa int;
mysql>[Err] 1062 - Duplicate entry '1' for key 'id'


原因分析:

DDL: Alter table

DML: add、update、delete

在MySQL 5.6版本中引入Online DDL的特性,Online DDL操作時會將DML操作緩存起來存入到變更日誌,等DDL執行完成之後纔會執行變更日誌中的DML操作。在Oline DDL執行期間,並行的DML有可能會未檢查主鍵衝突直接插入一條相同主鍵的數據,當時並不會報錯,在DDL執行完成執行變更日誌時纔會報錯,導致DDL報Duplicate entry 'xxx' for key 'PRIMARY'並執行失敗。
解決方法:
1.對於大表alter table操作建議用pt工具等工具操作,不會出現該問題
2.儘量在業務低峯期操作,減少該報錯出現的概率

3.手動lock table,進行修改
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章