【错误】:Could not open JDBC Connection for transaction; nested exception is: Communications link failure;The last packet sent successfully to the server was 1 milliseconds ago
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | # #错误日志 2016 - 11 - 10 16 : 19 : 20 , 834 ERROR [org.quartz.core.JobRunShell] - Job DEFAULT.jobtask threw an unhandled Exception: org.springframework.scheduling.quartz.JobMethodInvocationFailedException: Invocation of method 'execute' on target class [ class com.zsxh.enrol.job.TaskJob] failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 4 , 700 , 816 milliseconds ago. The last packet sent successfully to the server was 12 milliseconds ago. at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java: 266 ) at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java: 75 ) at org.quartz.core.JobRunShell.run(JobRunShell.java: 202 ) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java: 573 ) Caused by: org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 4 , 700 , 816 milliseconds ago. The last packet sent successfully to the server was 12 milliseconds ago. at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java: 245 ) at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java: 373 ) at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java: 427 ) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java: 276 ) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java: 96 ) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java: 179 ) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java: 207 ) at com.sun.proxy.$Proxy33.syncOrderStatus(Unknown Source) at com.zsxh.enrol.job.TaskJob.syncOrderStatusJob(TaskJob.java: 30 ) at com.zsxh.enrol.job.TaskJob.execute(TaskJob.java: 20 ) at sun.reflect.GeneratedMethodAccessor113.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 43 ) at java.lang.reflect.Method.invoke(Method.java: 606 ) at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java: 269 ) at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java: 257 ) ... 3 more Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 4 , 700 , 816 milliseconds ago. The last packet sent successfully to the server was 12 milliseconds ago. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java: 57 ) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java: 45 ) at java.lang.reflect.Constructor.newInstance(Constructor.java: 526 ) at com.mysql.jdbc.Util.handleNewInstance(Util.java: 389 ) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java: 1038 ) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java: 3422 ) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java: 3322 ) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java: 3762 ) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java: 2435 ) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java: 2582 ) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java: 2531 ) at com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java: 4852 ) at com.mchange.v2.c3p0.impl.NewProxyConnection.setAutoCommit(NewProxyConnection.java: 881 ) at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java: 225 ) ... 17 more Caused by: java.net.SocketException: Connection reset at java.net.SocketInputStream.read(SocketInputStream.java: 196 ) at java.net.SocketInputStream.read(SocketInputStream.java: 122 ) at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java: 100 ) at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java: 143 ) at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java: 173 ) at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java: 2911 ) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java: 3332 ) ... 25 more 2016 - 11 - 10 16 : 19 : 20 , 845 ERROR [org.quartz.core.ErrorLogger] - Job (DEFAULT.jobtask threw an exception. org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: org.springframework.scheduling.quartz.JobMethodInvocationFailedException: Invocation of method 'execute' on target class [ class com.zsxh.enrol.job.TaskJob] failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 4 , 700 , 816 milliseconds ago. The last packet sent successfully to the server was 12 milliseconds ago.] at org.quartz.core.JobRunShell.run(JobRunShell.java: 213 ) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java: 573 ) Caused by: org.springframework.scheduling.quartz.JobMethodInvocationFailedException: Invocation of method 'execute' on target class [ class com.zsxh.enrol.job.TaskJob] failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 4 , 700 , 816 milliseconds ago. The last packet sent successfully to the server was 12 milliseconds ago. at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java: 266 ) at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java: 75 ) at org.quartz.core.JobRunShell.run(JobRunShell.java: 202 ) ... 1 more Caused by: org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 4 , 700 , 816 milliseconds ago. The last packet sent successfully to the server was 12 milliseconds ago. at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java: 245 ) at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java: 373 ) at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java: 427 ) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java: 276 ) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java: 96 ) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java: 179 ) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java: 207 ) at com.sun.proxy.$Proxy33.syncOrderStatus(Unknown Source) at com.zsxh.enrol.job.TaskJob.syncOrderStatusJob(TaskJob.java: 30 ) at com.zsxh.enrol.job.TaskJob.execute(TaskJob.java: 20 ) at sun.reflect.GeneratedMethodAccessor113.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 43 ) at java.lang.reflect.Method.invoke(Method.java: 606 ) at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java: 269 ) at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java: 257 ) ... 3 more Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet successfully received from the server was 4 , 700 , 816 milliseconds ago. The last packet sent successfully to the server was 12 milliseconds ago. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java: 57 ) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java: 45 ) at java.lang.reflect.Constructor.newInstance(Constructor.java: 526 ) at com.mysql.jdbc.Util.handleNewInstance(Util.java: 389 ) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java: 1038 ) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java: 3422 ) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java: 3322 ) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java: 3762 ) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java: 2435 ) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java: 2582 ) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java: 2531 ) at com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java: 4852 ) at com.mchange.v2.c3p0.impl.NewProxyConnection.setAutoCommit(NewProxyConnection.java: 881 ) at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java: 225 ) ... 17 more Caused by: java.net.SocketException: Connection reset at java.net.SocketInputStream.read(SocketInputStream.java: 196 ) at java.net.SocketInputStream.read(SocketInputStream.java: 122 ) at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java: 100 ) at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java: 143 ) at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java: 173 ) at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java: 2911 ) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java: 3332 ) |
在Java中链接MySql的时候,经常会出现时间长不操作,再去点操作的时候,就会报上面错误,当第二次点击的时候就好了,下面是我用到的解决方法:
在DataSource中加入以下代码:
<property name="idleConnectionTestPeriod" value="60" /> <property name="preferredTestQuery" value="select 1" /> <property name="testConnectionOnCheckin" value="true"/>
在JDBC链接的后台加上以下代码:
autoReconnect\=true&failOverReadOnly\=false&maxReconnects\=10
例:
jdbc.url=jdbc\:mysql\://127.0.0.1\:3306/db_zsxh_bm?useUnicode\=true&characterEncoding\=UTF-8&zeroDateTimeBehavior\=convertToNull&autoReconnect\=true&failOverReadOnly\=false&maxReconnects\=10
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决