bug记录:mysql生成id后获取出错

今天同事给我看一段代码,是我前年写的。
他发现了一个bug。
代码的作用是用jdbc向mysql中插入一条主键自增的数据,然后使用mysql的select last_insert_id()语法获取生成的主键值。
问题出在两次sql执行用的不是同一个数据库连接,而从数据源里获取了两次
我们都知道, mysql的last_insert_id()函数是针对connection的,所以这是个严重bug。
之前两年负载小,所以数据源大概每次都返回同一个connection,于是bug被遮盖住了。最近服务器压力增加,两次连接就可能不是同一个了。
因此last_insert_id()得到的主键值出错!

那时候我怎么会获取两次连接来执行一个方法里的两句sql,包括我在内所有人都莫名其妙。错误比较明显,这项目已经交接给他们了,不过出于对我的信任,还是屁颠屁颠来问我:获取两个连接是不是还有其他特殊考虑?我苦思冥想了一会,答曰:忘了。 hitwall.gif

没想到我曾经养过的臭虫还到处潜伏着,等着我出丑呢。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值