日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql并发插入死锁_高并发下insert死锁 · Issue #ITUNR · baomidou/mybatis-plus - Gitee.com...

發(fā)布時(shí)間:2025/3/21 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql并发插入死锁_高并发下insert死锁 · Issue #ITUNR · baomidou/mybatis-plus - Gitee.com... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

當(dāng)前使用版本(必須填寫清楚,否則不予處理)

springboot版本:2.0.3.RELEASE

mybatis版本:3.0.5

jdk:1.8

該問(wèn)題是怎么引起的?(最新版上已修復(fù)的會(huì)直接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,"該賬號(hào)已經(jīng)答過(guò)題,請(qǐng)勿重復(fù)提交");

}

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,"提交失敗");

}

}

數(shù)據(jù)庫(kù)操作有兩次,第一次是查詢

List resultToday = resultEverydayService.findResultToday(openId);

第二次是新增

resultEverydayService.save(resultEveryday);

操作的是同一張表,先查詢是否已經(jīng)有,沒(méi)有的話進(jìn)行新增

重現(xiàn)步驟

當(dāng)并發(fā)的時(shí)候出現(xiàn)此類錯(cuò)誤

報(bào)錯(cuò)信息

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

總結(jié)

以上是生活随笔為你收集整理的mysql并发插入死锁_高并发下insert死锁 · Issue #ITUNR · baomidou/mybatis-plus - Gitee.com...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。