The last packet sent successfully to the server was 0 milliseconds ago. 解决办法记录-程序员宅基地

技术标签: java  mysql  bug系列  

最近与第三方对接数据的时候,通过navicat等工具的时候是能够正常访问数据库的,但通过java代码访问对方提供的数据库,总是错误,通过各种尝试,总算解决了,特记录一下,希望能帮助同样遇到此问题的同行
(1)第一次通过代码访问时出现了以下错误:

    Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    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:525)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2332)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    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:525)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
    at java.sql.DriverManager.getConnection(DriverManager.java:579)
    at java.sql.DriverManager.getConnection(DriverManager.java:243)
    at javaapplication3.JavaApplication3.main(JavaApplication3.java:32)

解决办法:

大部分网上给的解决方案都是修改连接接超时的参数,但是我按照网上的方法都试了依然不行
在这里插入图片描述

同样的一套代码使用我本地的数据库进行测试的时候是正常的,但是现在外网的数据库出现这种问题,
最后没有办法,我对比了一下两个库的版本号,左边是我本地的,右边是第三方提供的外网数据库
在这里插入图片描述在这里插入图片描述
目前程序里使用的mysql的驱动jar包版本为
在这里插入图片描述

于是,我尝试着将mysql的驱动jar包版本提升一下,换成一下jar包
在这里插入图片描述

(2)换了jar包后出现了以下新的错误,第一个问题算是解决了,可是出现了新的问题

```java
Tue Feb 09 20:08:38 CST 2021 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
	at com.mysql.jdbc.Util.getInstance(Util.java:408)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861)
	at com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2105)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2030)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:778)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at com.ccb.commons.util.MYSQLJDBCUtil.getConnection(MYSQLJDBCUtil.java:40)
	at com.ccb.commons.util.MYSQLJDBCUtil.main(MYSQLJDBCUtil.java:95)

解决办法:
我的链接地址配置是这样的
url = “jdbc:mysql://127.0.0.1:39603/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false”;在这里插入图片描述
于是将地址换成了一下
url = “jdbc:mysql://127.0.0.1:39603/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8”;

在这里插入图片描述
(3)第二个问题解决了,又出现了以下错误

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 619 milliseconds ago.  The last packet sent successfully to the server was 595 milliseconds ago.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
	at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:990)
	at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:201)
	at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:4914)
	at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1663)
	at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1224)
	at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2199)
	at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2230)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2025)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:778)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:386)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:330)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at java.sql.DriverManager.getConnection(Unknown Source)
	at com.ccb.commons.util.MYSQLJDBCUtil.getConnection(MYSQLJDBCUtil.java:40)
	at com.ccb.commons.util.MYSQLJDBCUtil.main(MYSQLJDBCUtil.java:95)
Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
	at sun.security.ssl.Alerts.getSSLException(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
	at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
	at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
	at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
	at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
	at sun.security.ssl.Handshaker.processLoop(Unknown Source)
	at sun.security.ssl.Handshaker.process_record(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
	at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
	at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:186)
	... 19 more
Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
	at com.mysql.jdbc.ExportControlled$X509TrustManagerWrapper.checkServerTrusted(ExportControlled.java:302)
	at sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(Unknown Source)
	... 28 more
Caused by: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
	at sun.security.provider.certpath.PKIXCertPathValidator.engineValidate(Unknown Source)
	at java.security.cert.CertPathValidator.validate(Unknown Source)
	at com.mysql.jdbc.ExportControlled$X509TrustManagerWrapper.checkServerTrusted(ExportControlled.java:295)
	... 29 more

解决办法:
看提示ssl的问题,于是将url地址中的useSSL=true改成useSSL=false
最后终于成功了

总结解决方案
(1)首先确定jdbc.url地址是正确的
(2)修改wait_timeout和interactive_timeout ,参考链接https://blog.csdn.net/JustinQin/article/details/78630100
(3)修改mysql驱动版本,将版本提升,所以建议如果修改timeout不成功的话,一定要将驱动版本升级一下再试试

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/apachesolr/article/details/113766949

智能推荐

用IntelliJ IDEA 社区版配置web开发环境-程序员宅基地

文章浏览阅读2.4k次。IntelliJ IDEA社区版缺少的是Web方面的开发模块旗舰版: 社区版: 要用 IDEA 社区版进行web开发的话,需要自己手动配置由于IDEA社区版(Commun..._idea社区版指定不了环境

《编写有效用例》阅读笔记01-程序员宅基地

文章浏览阅读69次。《编写有效用例》是美国AlistairCockburn的著作全书分为三部分:1.用例体部分2.在需求分析过程中经常遇到的问题3.对忙于编写用例的人的提示今天我主要阅读了第一部分。在作者的引导下思考了以下问题:1. 什么是用例?例用于表示系统所提供的服务,它定义了系统是如何被参与者所使用的,它描述的是参与者为了使用系统所提供的某一完整功能而与系统之间发生..._alistair cockburn。编写有效用例

利用时间序列ARMA模型和LSTM算法分析并预测pm2.5值_adf、pvalue、usedlag、nobs、critical values、icbest、reg-程序员宅基地

文章浏览阅读1.3w次,点赞8次,收藏92次。数据来源于 UC Irvine Machine Learning Repository网站中的Beijing PM2.5 Data Data Set,数据文件类型为CSV。一、利用ARMA模型数据平稳性分析还是以天为单位分析这五年之内的pm2.5值,并绘制曲线ARIMA 模型对时间序列的要求是平稳型,观察图标能看出其没有固定的上升或下降的趋势,粗略判断是平稳序列。不进行差分操作..._adf、pvalue、usedlag、nobs、critical values、icbest、regresults、resstore

ubuntu安装xsser及使用_xsser下载-程序员宅基地

文章浏览阅读1.8k次。XSSer:自动化XSS漏洞检测及利用工具参考https://xsser.03c8.net/下载访问网址,进行下载https://github.com/epsylon/xsser解压到指定位置配置安装依赖,执行sudo apt-get install python-pycurl python-xmlbuilder python-beautifulsoup python-geo..._xsser下载

给Windows安装Apache 24和php 7_apache24和php8 windows-程序员宅基地

文章浏览阅读559次。原文链接https://danielarancibia.wordpress.com/2015/09/27/installing-apache-2-4-and-php-7-for-development-on-windows/Installing Apache 2.4 and PHP 7 for Development on WindowsPosted on septiembre 27, 2015 ..._apache24和php8 windows

最新AI系统ChatGPT源码+AI绘画系统源码+支持GPT4.0+Midjourney绘画+搭建部署教程+附源码_最新ai 代码-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏3次。支持用户自定义Prompt应用。SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型+国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧!SparkAi程序使用Nestjs和Vue3框架技术,持续集成AI能力到AIGC系统。已支持OpenAI GPT全模型+国内AI全_最新ai 代码

随便推点

Binder传输机制原理(一)_binder句柄值-程序员宅基地

文章浏览阅读1.3k次,点赞3次,收藏7次。1 Binder是如何做到精确打击的? 我们先问一个问题,binder机制到底是如何从代理对象找到其对应的binder实体呢?难道它有某种制导装置吗?要回答这个问题,我们只能静下心来研究binder驱动的代码。在本系列文档的初始篇中,我们曾经介绍过ProcessState,这个结构是属于应用层次的东西,仅靠它当然无法完成精确打击。其实,在binder驱动层,还有个与之相对的结构,叫做binder_proc。为了说明问题,我修改了初始篇中的示意图,得到下图:1.1 创建bind..._binder句柄值

AJ-Report 禁用flyway以及切换底层数据库方案_ajreport没有数据库表-程序员宅基地

文章浏览阅读905次。禁用flyway为了解决之前有很多小伙伴因为数据库的版本问题,存在一些sql脚本语法不支持,导致数据库初始化失败配置文件bootstrap.yml,将spring.flyway.enabled改为false即可。spring: flyway: enabled: true #是否开启flyway,默认true. baseline-on-migrate: true #数据库连接配置 url: ${spring.datasource.url} user:_ajreport没有数据库表

d3.js学习(时间轴-多折线图)_d3时间轴-程序员宅基地

文章浏览阅读6.2k次。根据项目的要求,利用d3.js画出x轴为时间轴,多条折线的折线图,看了官方的文档和很多参考资料才做了出来。所以想分享给程序猿朋友们。(网上找的基本上都不满足需求。只能靠自己一步一步写下来)成果曲线图:step1: 准备数据// 数据,{ x: 为时间轴,y: 相对应的值}var trendData = [[{'x':'2018-02-01','y':1},{'x..._d3时间轴

Win-MASM64汇编语言-CMP/CMPSB/CMPSW/CMPSD/JNE/JCXZ-程序员宅基地

文章浏览阅读2.2k次。怀念二抱三抱_cmpsd

5. 测试fabric-sdk-node应用_kevin-fabric-sdk-node-程序员宅基地

文章浏览阅读893次,点赞3次,收藏7次。从零到壹构建基于fabric-sdk-node的项目开发实战之五运行示例程序一切就绪,现在可以开始测试我们的应用程序了。终端窗口 1进入项目根目录:$ cd $HOME/kevin-fabric-sdk-node使用 docker-compose 命令启动网络$ docker-compose -f artifacts/docker-compose.yaml up终端..._kevin-fabric-sdk-node

画面卡顿不流畅_刺激战场:游戏画面设置的重要性,图一都是菜鸟,图四才是大神!...-程序员宅基地

文章浏览阅读252次。若说游戏中什么才是吃鸡的保障,很多人肯定会说好的手机,配上好的技术和武器才是吃鸡的保障,这话并没有错,但是有一个大家容易忽略了一个地方,那就是游戏画面的设置,它也是能让你吃鸡变得更加容易保障,那么我们就来看看游戏画面设置的重要性,如何让你更加容易流畅的玩游戏。如上图如果觉得自己的手机很牛逼非常高级,去把画面品质选择最高,那么你确实可以看到比较好的画质,草丛模型等都会看起来比较精致,但是实...

推荐文章

热门文章

相关标签