mysql并发插入死锁_高并发下insert死锁 · Issue #ITUNR · baomidou/mybatis-plus - Gitee.com...
當前使用版本(必須填寫清楚,否則不予處理)
springboot版本:2.0.3.RELEASE
mybatis版本:3.0.5
jdk:1.8
該問題是怎么引起的?(最新版上已修復的會直接close掉)
public Result getExamSetByExamId(@RequestParam("useTime")String useTime,
@RequestParam("openId")String openId,
@RequestParam("score")String score,
@RequestParam("isPass")Integer isPass,
@RequestParam("resultCount")Integer resultCount,
@RequestParam("answer")String answer){
try{
List resultToday = resultEverydayService.findResultToday(openId);
if(!resultToday.isEmpty()){
return ResultUtils.error(0001,"該賬號已經答過題,請勿重復提交");
}
ResultEveryday resultEveryday = new ResultEveryday();
resultEveryday.setScore(Integer.valueOf(score)).setOpenId(openId).
setIsPass(isPass).setUseTime(useTime).setResultCount(resultCount);
resultEverydayService.save(resultEveryday);
resultDetailsEveryDay(resultEveryday.getResultId(),answer);
return ResultUtils.success(resultEveryday.getResultId());
}catch (Exception e){
log.error(openId+",提交每日答題失敗,{}",e);
return ResultUtils.error(0001,"提交失敗");
}
}
數據庫操作有兩次,第一次是查詢
List resultToday = resultEverydayService.findResultToday(openId);
第二次是新增
resultEverydayService.save(resultEveryday);
操作的是同一張表,先查詢是否已經有,沒有的話進行新增
重現步驟
當并發的時候出現此類錯誤
報錯信息
Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
The error may involve com.mybatis.plus.mp.mapper.ResultEverydayMapper.insert-Inline
The error occurred while setting parameters
SQL: INSERT INTO mp_result_everyday ( open_id, use_time, is_pass, score, result_count ) VALUES ( ?, ?, ?, ?, ? )
Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
; ]; Lock wait timeout exceeded; try restarting transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
總結
以上是生活随笔為你收集整理的mysql并发插入死锁_高并发下insert死锁 · Issue #ITUNR · baomidou/mybatis-plus - Gitee.com...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: l源码安装mysql升级_[Linux]
- 下一篇: mysql数据库rpm包_MySQL 8