UPDATE操作出现主键冲突错误,如果出现了这样的问题,你一定会感到匪夷所思!
mysql> UPDATE `GC_Price` SET `Price` = '155.00', `OptTime` = '2013-07-01 16:12:36', `CRCode` = '0109' WHERE (PRID = 364706189);
ERROR 1062 (23000): Duplicate entry '2147483647' for key 'PRIMARY'
我的GC_Price表的主键PRID的最大值为:437573062,而求表中也没主键为'2147483647' 的记录。
2147483647:注意,这个int的最大值,不信,你用计算器算一算。应该是表的自增主键达到了最大值!!!外键关联或触发器等存储代码???
既然不是GC_Price表发生主键冲突,那只能由其他的代码引起。那看看触发器吧
mysql> show triggers like '%Price%'\G;
*************************** 1. row ***************************
Trigger: t_price_changed_prid_insert
Event: INSERT
Table: GC_Price
Statement: INSERT INTO BE_PRID_Changed(PRID,Type) VALUES (NEW.PRID,1);