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,進行修改