应用日志中,mybatis更新语句线程中断,却无exception
描述:应用日志中,mybatis更新语句打印了执行语句,且有参数输入,但是无更新结果输出,线程中断,日志中无exception异常。
分析:(1)语句无输出,查看了数据库有没有锁表的情况
--查看被锁的表
select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
--查出锁定表的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode
SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,s.terminal, s.logon_time, l.type
FROM v$session s, v$lock l
WHERE s.sid = l.sid
AND s.username IS NOT NULL
ORDER BY sid desc;
-- SID: Session identifier
-- SERIAL#:Session serial number
-- SID用于标志一个session,和一个process对应。一个process会创建多个session,但是都有相同sid,只是SERIAL#不同。
经排查,发现数据库没有活跃的session和被锁的表,不是该原因。
(2)排查日志的异常输出是否正常
考虑日志没有异常的原因是:应用程序根本没有捕获到异常。查看springboot工程代码,发现没有写全局异常处理的方法!
在公共方法部分,使用@ExceptionHandler注解添加全局异常处理的方法。
ExceptionHandler注解的使用,可以参考:https://www.cnblogs.com/shuimuzhushui/p/6791600.html
_______________________
本文来自博客园,作者:给我一条小板凳,转载请注明原文链接:https://www.cnblogs.com/yoojooq/articles/15819699.html

浙公网安备 33010602011771号