Cause: com.mysql.cj.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request

简言:这种异常从字面翻译过来: mysql 请求链接超时 ,具体超时是什么原因导致的,可以根据情况分析下。

org.springframework.dao.QueryTimeoutException: 
### Error updating database.  Cause: com.mysql.cj.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request
### The error may exist in file [/app/resources/mybatis/YouDouRecordMapper.xml]
### The error may involve com.txxy.activity.mapper.YouDouRecordMapper.insert-Inline
### The error occurred while setting parameters
### SQL: insert into youdou_record(                   id, u_id, change_Amount, source_id, source_name, type, create_time, create_user, modify_time, modify_user               ) values(null, ?, ?, ?, ?, ?, now(), ?, now(), ?)
### Cause: com.mysql.cj.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request
; Statement cancelled due to timeout or client request; nested exception is com.mysql.cj.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request
	at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:76) ~[spring-jdbc-5.3.22.jar:5.3.22]
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70) ~[spring-jdbc-5.3.22.jar:5.3.22]
	at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:79) ~[spring-jdbc-5.3.22.jar:5.3.22]
	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:88) ~[mybatis-spring-2.0.5.jar:2.0.5]
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440) ~[mybatis-spring-2.0.5.jar:2.0.5]

问题分析原因:当前业务上线已经有半年,突然监控到异常。分析原因,应该不是代码错误导致,不然问题早就被抛出来,那就是网络或是DB被占用资源请求队列阻塞原因导致请求超时。

分析工具:阿里云数据库监控平台
在这里插入图片描述
通过上面监控盘可以观察到数据库再这时间段有明显波动,找DBA确认有执行其它业务

具体操作:

altel table youdou_record convert to character set utf8m64_general_ci;
这语句意思是修改youdou_record  表字符集

语句执行,会锁表,导致JDBC 连接数据库,执行inset 语句插入数据,抛出请求超时,同时数据库连接池堆栈信息也同步增长。

问题就分析到这了。

上问题因业务而异,也有可能是其它原因,下面给大家做个罗列

1.配置jdbc超时时间,适当增大,在JDBC连接参数里加上queryTimeout=2400即可解决。
2.加索引,优化SQL,给关联字段增加索引
3.子查询尽量缩小搜索范围,减少join的次数
4.能用join就不要in了
5.限制索引的数目
6.不要查询*(所有),避免大字段,查询需要信息即可

以上资料仅供参考,欢迎大家留言讨论~ ღ( ´・ᴗ・` )比心

Cause: com.mysql.cj.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request简言:这种异常从字面翻译过来:mysql 请求链接超时,具体超时是什么原因导致的,可以根据情况分析下。异常详情问题分析原因:当前业务上线已经有半年,突然监控到差异,分析原因,应该不是代码错误导致,不然问题早就被抛出来,那就是网络或是db被占用资源请求队列阻塞原因导致请求超时。分析工具:阿
Cause: com.mysql.cj.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request 1、配置jdbc超时时间,适当增大 2、优化SQL,给关联字段增加索引
今天用execjs调用JS时,发现报错execjs._exceptions.ProgramError: ReferenceError: document is not defined 错误类型:文档对象未定义,解决方法,定义对象即可,习惯性定义变量嘛 var document ;?   emmmmmmmmmmmmmmm….不行的,继续报错  execjs._exceptions.ProgramError: TypeError: Cannot read property 'createElement' of undefined 若是报错:execjs._exceptions.Prog
###Errorqueryingdatabase.Cause:com.mysql.jdbc.exceptions.MySQLTimeoutException:Statementcancelledduetotimeoutorclientrequest 原因是由于执行业务超出了配置的事务超时时间 由于在代码中配置了超时...
Statement cancelled due to timeout or client request报错详情报错分析及解决问题重现及解决方案 Caused by: com.mysql.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2303)
出现这种错误如果不是因为数据库连接的问题,也不是因为sql语句的问题,也不是因为中英文格式空格,并且实在解决不了的话,试试修改一下参数名. 我的是将参数名称设置为selling报错,后来改成sellingMinUnit就好了,我也不知道为什么,就是莫名奇妙的好了,然后我再改回去又报错,反正就是参数名称问题 如果还是不行试试在参数名称前加上注解 @Param("参数名") org.spr...
其实在这次之前也发生过死锁异常,但当时并没当回事,也没分析数据,简单的认为是偶发现象,并且是修改同一用户产生,于是就在最初添加了select for update,直到这两天发生了好几笔,分析数据发现并不是之前猜测的那样 这两天老接到运维通知,说某客户又发生了卡单现象,让我分析下问题,然后找来日志,异常信息如下: ### Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollback
出现mysql 异常com.mysql.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request 如何模拟? 通过cmd 窗口 mysql -uroot -p 登录mysql 查看自己事务隔离级别以及修改自动提交。 SELECT @@global.tx_isolation; select @@autocommit; set autocommit = 0; 执行命令开启事.
Serilog.Exceptions是Serilog的附加用于记录Exception.ToString()中未输出的异常详细信息和自定义属性。 它有什么作用? 现在,您的JSON日志将补充详细的异常信息,甚至是自定义异常属性。 这是当您从EntityFramework中记录DbEntityValidationException时发生的情况的示例(此异常臭名昭著,因为它具有.ToString()中未包含的深度嵌套的自定义属性)。 catch ( DbEntityValidationException exception ) logger . Err
"Underlying cause: com.mysql.cj.jdbc.exceptions.CommunicationsException : Communications link failure"这个错误通常是由于网络连接问题导致的。它表示Hive无法连接到MySQL数据库。可能的原因包括MySQL服务器未运行、网络连接中断或防火墙阻止了连接。为了解决这个问题,可以尝试以下几个步骤: 1.确保MySQL服务器正在运行,并且可以通过网络访问。 2.检查网络连接是否正常。可以尝试使用ping命令测试网络连接。 3.检查防火墙设置,确保允许Hive连接到MySQL服务器的端口。 4.检查Hive配置文件中的连接URL、驱动程序和用户名是否正确。 5.尝试重新启动Hive服务和MySQL服务器。