+
 新版

java 中报 ORA-00060

码上中国博客 发布于 2021/03/09 12:14
阅读 469
收藏 0

今天看生产日志,发现了很不可思议的问题,一个很简单的Java方法中居然出现了ORA-00060,要知道在这个方法中只有一个更新的SQL,怎么可能产生死锁呢?

伪代码如下:

@Transactional(rollbackFor=Throwable.class)
public void function1(){

    ///1、根据查询条件查询该数据a

    ///2、其他判断逻辑,无其他SQL

    ///3、根据id更新改数据a
}

这个方法的业务逻辑很简单,页面上对某条数据进行收藏和取消收藏的操作(点一下收藏,再点一下取消收藏)

该方法为Controller直接跳转进来的,总共只有30行代码,但就在第三步更新数据的时候报了ORA-00060的错误,真的很奇怪,什么样的操作会报这个错误?

加载中
0
喜之郎
喜之郎

多个线程在操作同一条数据,死锁正常吧。

码上中国博客
码上中国博客
最近几分钟只有这一个请求
0
狐扯
狐扯

并发死锁不正常吗?

码上中国博客
码上中国博客
问题是这个更新SQL是每个人的id都不一样的,一个人点的再快,在这几十行代码上也不会出现并发。我看了日志,最近几分钟只有这一个请求。
0
f
freezingsky

检查一下,是否存在其他的业务代码有干预同一条数据。

0
小伯恩
小伯恩

并发情况,线程安全问题

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部