首先,这的确是主键冲突,但select结果是count(*) = 0。
这是insert时报的错误,如果改用update则也返回0,也就是说update也是失败的。
这个问题很奇怪,异常堆栈没什么价值就不贴了,插入总是失败,有没有类似经验的朋友帮忙看看,MySQL不熟啊。

解决方案 »

  1.   


    如果改用update则也返回0,也就是说update也是失败的。这句话是错的,这表示update没有更新任何一条数据,也就是跟你select结果对应的主键重复,你看看你的应用程序是否同时insert了两条语句
      

  2.   

    并没有在一个事物中多次执行重复的SQL,在MySQL命令行执行也同样失败,而且由于事物隔离级别设置为了最高级,同一时间不会有其它程序来捣乱,问题诡异啊。
      

  3.   

    你的表是什么样? UPDATE语句是什么? 
    注意MYSQL中UPDATE语句如果对记录不产生任何修改,则不会更新比如 id=1,col=4
    update t set col=4 where id=1
    由于col本来就是4,则不会更新记录。