不同web应用操作同一张表,hibernate出现索引重复异常?

图片描述

轮询报错: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'a270963e847b4d89956ba2e4f76bee55' for key 'MAC'

MAC是建立在 流水号 上的索引,感觉是和hibernate的事务有关,谢谢解答

阅读 3k
3 个回答

不会跟hibernate有关系的。
MySQLIntegrityConstraintViolationException 外键约束冲突。
是数据库层面出错了。可以通过堆栈确定一下调用过程,如果没有insert/update操作是不会出现这个问题的。


你给的逻辑我也看不出啥原因。你可以将错误逻辑使用try catch包起来,在catch中增加条件断点e.getClass().getName().contains("MySQLIntegrityConstraintViolationException")
当出现错误时与分析一下现有的数据,我想很快会定位出问题的。

MAC是唯一索引,这里报的异常是指插入了相同的值导致唯一索引冲突,属于数据库层面的异常。

至于为什么造成这个异常,得看代码层面是怎样写的。

怀疑是这个轮询过程有问题,可能还没等第一次请求返回,第二次请求就发出了,然后传入的参数是重复的,导致重复插入异常。

上面两个说的很清楚了.. 这是你业务层面没控制好导致的错误,具体为何导致只能拥有代码的人才能解决了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题