• 【错误】: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


    # #错误日志
    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
  • 相关阅读:
    【书目20200917】影响力思维
    Spring AOP +自定义注解 + Spel表达式 实现审计日志
    SPRING BOOT 注解之OBJECTPROVIDER源码追踪
    Activiti~相关概念
    ELK~fluentd多行日志的收集
    k8s~向etc/hosts里添加内容
    maven~本地仓库的指定
    ssh~ Access denied问题解决
    MySQL如何绕过授予information_schema中对象时报ERROR 1044(4200)错误
    Zabbix如何监控SQL Server服务状态
  • 原文地址:https://www.cnblogs.com/raphael5200/p/6088076.html
Copyright © 2020-2023  润新知