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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mybatis 执行插入操作,insert 返回1,数据库中无数据。数据库中数据的创建时间和插入执行时间不一致。

發(fā)布時間:2023/12/10 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatis 执行插入操作,insert 返回1,数据库中无数据。数据库中数据的创建时间和插入执行时间不一致。 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

大家好,我是烤鴨:

? ? ?今天記錄一下線上的問題,由于不是我們組的代碼,所以沒參與全程,只是最后有幸聽各位大佬探討解決方案。mybatis 執(zhí)行插入操作,insert返回1,日志記錄和接口返回都正常,但是數(shù)據(jù)庫中無數(shù)據(jù)

?

1.場景介紹

? ? 該接口是一個從mq中消費數(shù)據(jù)的接口,每消費一條記錄,數(shù)據(jù)庫插入一條數(shù)據(jù)(無事務(wù))。項目上線后,不定時會出現(xiàn)Mybatis日志插入成功,但是數(shù)據(jù)庫中無數(shù)據(jù)的情況。每次重啟之后就好了,但是不知道過多久又不行了。問了DBA,當(dāng)時執(zhí)行的操作線程正常,鎖釋放情況正常,是交替執(zhí)行,就是insert語句確實是一條一條執(zhí)行的,并無死鎖情況,但是binlog中無數(shù)據(jù)

? ? 后來開發(fā)人員又說,mybatis打印的sql語句的時間和數(shù)據(jù)庫的創(chuàng)建時間不一致,有時候相差兩小時。

?

2.思路

? ? ?從上面的場景,基本能看出來是sql執(zhí)行了,事務(wù)沒有commit。有大佬說是不是某個版本的mybatis的bug或者項目打包不完整,又一起縷了下當(dāng)時的接口代碼,雖然業(yè)務(wù)邏輯比較重,簡單來說,還是校驗參數(shù)后生成數(shù)據(jù)入庫,不會產(chǎn)生數(shù)據(jù)庫死鎖。

? ? ?

3.解決

? ? ?當(dāng)時一直在看問題接口,也沒想過其他的。有位大佬找了項目的其他代碼,發(fā)現(xiàn)了問題。由于同一個項目,單一數(shù)據(jù)源,共用一個事務(wù)管理器 transactionManager。其他的接口有手動開啟事務(wù),但是try catch沒有finally,出現(xiàn)異常,一直報這個錯,Lock wait timeout exceeded; try restarting transaction導(dǎo)致沒有釋放事務(wù)管理器,所有的sql操作都卡在這

? ? 查了一下第一次出現(xiàn)有日志無數(shù)據(jù)的地方的日志,附近1千行沒有類似錯誤,附近5k行發(fā)現(xiàn)了,確實是這個問題。

?

4.總結(jié)

? ? ?先不討論為什么要手動開啟事務(wù),如果事務(wù)手動開啟了,一定要記得關(guān)閉。如果用到了try catch 必須加finally

? ? ?其次,這個問題發(fā)生了好幾次,每次都嘗試了解決方案,比如在將myabtis日志級別改為debug,問題方法改為手動事務(wù)(原來是無事務(wù))等等,都沒有解決。還是日志分析的不夠。如果能多看一點日志(多幾千行),說不定就能發(fā)現(xiàn)問題了。

? ??

總結(jié)

以上是生活随笔為你收集整理的mybatis 执行插入操作,insert 返回1,数据库中无数据。数据库中数据的创建时间和插入执行时间不一致。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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