跨境派

跨境派

跨境派,专注跨境行业新闻资讯、跨境电商知识分享!

当前位置:首页 > 工具系统 > 其他工具 > 解决报错 java.sql.SQLNonTransientConnectionException: Could not create connection to database server

解决报错 java.sql.SQLNonTransientConnectionException: Could not create connection to database server

时间:2024-03-27 11:16:20 来源:网络cs 作者:亙句 栏目:其他工具 阅读:

标签: 解决 

启动Spring项目报错

java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)Caused by: com.mysql.cj.exceptions.CJException: Public Key Retrieval is not allowedat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)Caused by: com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowedat sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

这个问题伴随了我挺久,最开始没太在意,因为我只要是把 Navicat 启动起来以后,就没有这个问题了,后面我决定 !  直面这个问题

本地环境

先描述一下我本地的环境  mysql 5.6 和 mysql 8.0.32  同时部署, 5.6是3306 端口 8.0.32 是3307端口

每天都是同时开机启动,当我手动停止 5.6 服务时,只保留8.0.32,再重新启动idea时 这个问题也就没有了。

但是这些只是缓兵之计罢了,不能真正的解决问题。

解决方式

1网上看了很多教程 先看pom文件 里指定的 mysql版本 对不对的

<dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>        <version>8.0.32</version>        <scope>runtime</scope></dependency>

比如改动一下  version 这里的版本号

修改完后 我发现好像并不好用

2 看别人的文章 说这个问题是 因为安装mysql的时候时区设置的不正确 ,mysql默认的是美国的时区,而我们要比他们迟8小时,采用+8:00格式。使用的数据库是MySQL,在你没有指定MySQL驱动版本的情况下它自动依赖的驱动是8.0.12很高的版本,这是由于数据库和系统时区差异所造成的

这样的解决方式

在jdbc连接的url后面加上serverTimezone=GMT即可解决问题,如果需要使用gmt+8时区,需要写成GMT%2B8,否则会被解析为空。

url: jdbc:mysql://127.0.0.1:3307/xxx?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true&serverTimezone=GMT%2B8username: rootpassword: root

在url的最后,我加上了 gmt+8  可以直接复制,别的参数是什么意思,可以在网上搜。

这时启动发现是可以了

参数文章

http://t.csdnimg.cn/KeUWFicon-default.png?t=N7T8http://t.csdnimg.cn/KeUWF

结尾

有些错可能解决方法不止一种,要酌情考虑解决方式

本文链接:https://www.kjpai.cn/news/2024-03-27/149371.html,文章来源:网络cs,作者:亙句,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

文章评论