【DEBUG】com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support
项目场景:
使用 Spring SpringMVC Mybatis 进行整合SSM的过程中,声明一个声明式事务的查询服务,发现无法使用。
@Service
public class EmpServiceImpl implements EmpService {@Autowiredprivate EmpMapper empMapper;@Transactional@Overridepublic List<Emp> selectAll() {return empMapper.selectAll();}
}
<dependencies><!-- SpringMVC --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.15</version></dependency><!-- Spring 持久化层所需依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>5.3.15</version></dependency><!-- 日志 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.10</version></dependency><!-- ServletAPI --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency><!-- Spring5和Thymeleaf整合包 --><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring5</artifactId><version>3.0.14.RELEASE</version></dependency><!-- Mybatis核心 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency><!-- MySQL驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.19</version></dependency><!-- 数据源 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.9</version></dependency><!-- junit5 --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.8.2</version><scope>test</scope></dependency><!-- Spring 的测试功能 --><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.3.15</version></dependency><!-- Mybatis 和 Spring 的整合包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.7</version></dependency></dependencies>
DEBUG日志
[13:18:32.310] [ERROR] [Druid-ConnectionPool-Create-992196964] [com.alibaba.druid.pool.DruidDataSource] [create connection error, url: jdbc:mysql://localhost:3306/mybatis_exercise?serverTimezone=Asia/Shanghai&, errorCode 1251, state 08004]
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL clientat sun.reflect.GeneratedConstructorAccessor64.newInstance(Unknown Source)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at com.mysql.jdbc.Util.handleNewInstance(Util.java:403)at com.mysql.jdbc.Util.getInstance(Util.java:378)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:985)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3378)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3310)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:910)at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3810)at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1272)at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1992)at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:720)at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)at sun.reflect.GeneratedConstructorAccessor62.newInstance(Unknown Source)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at com.mysql.jdbc.Util.handleNewInstance(Util.java:403)at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:293)at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:283)at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1464)at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1529)at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2109)
[13:18:32.312] [ERROR] [Druid-ConnectionPool-Create-992196964] [com.alibaba.druid.pool.DruidDataSource] [create connection error, url: jdbc:mysql://localhost:3306/mybatis_exercise?serverTimezone=Asia/Shanghai&, errorCode 1251, state 08004]
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL clientat sun.reflect.GeneratedConstructorAccessor64.newInstance(Unknown Source)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at com.mysql.jdbc.Util.handleNewInstance(Util.java:403)at com.mysql.jdbc.Util.getInstance(Util.java:378)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:985)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3378)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3310)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:910)at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3810)at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1272)at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1992)at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:720)at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)at sun.reflect.GeneratedConstructorAccessor62.newInstance(Unknown Source)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at com.mysql.jdbc.Util.handleNewInstance(Util.java:403)at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:293)at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:283)at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1464)at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1529)at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2109)
[13:18:32.313] [ERROR] [Druid-ConnectionPool-Create-992196964] [com.alibaba.druid.pool.DruidDataSource] [create connection error, url: jdbc:mysql://localhost:3306/mybatis_exercise?serverTimezone=Asia/Shanghai&, errorCode 1251, state 08004]
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL clientat sun.reflect.GeneratedConstructorAccessor64.newInstance(Unknown Source)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at com.mysql.jdbc.Util.handleNewInstance(Util.java:403)at com.mysql.jdbc.Util.getInstance(Util.java:378)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:985)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3378)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3310)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:910)at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3810)at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1272)at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1992)at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:720)at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)at sun.reflect.GeneratedConstructorAccessor62.newInstance(Unknown Source)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)at java.lang.reflect.Constructor.newInstance(Constructor.java:423)at com.mysql.jdbc.Util.handleNewInstance(Util.java:403)at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:293)at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:283)at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1464)at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1529)at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2109)
问题描述:
- 根据网上的debug,发现很可能是mysql版本和mysql-connect-java依赖版本不对应,但是我使用的是mysql版本是8.0+
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.19</version></dependency>
事实上和这个没有关系
2. 使用Junit编写了一个测试类Test,发现能够查询到信息,这事情就变得很迷惑了。
3. 看了测试类的日志后,发现了了是jdbc.properties的driver没有配置好
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
[13:24:50.787] [WARN ] [main] [com.alibaba.druid.pool.vendor.MySqlValidConnectionChecker] [Cannot resolve com.mysq.jdbc.Connection.ping method. Will use 'SELECT 1' instead.]
只要在 jdbc.properties 中将 com.mysql.jdbc.Driver 改为com.mysql.cj.jdbc.Driver即可
原因分析:
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
[13:24:50.787] [WARN ] [main] [com.alibaba.druid.pool.vendor.MySqlValidConnectionChecker] [Cannot resolve com.mysq.jdbc.Connection.ping method. Will use 'SELECT 1' instead.]
解决方案:
只要在 jdbc.properties 中将 com.mysql.jdbc.Driver 改为com.mysql.cj.jdbc.Driver即可
【DEBUG】com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support相关推荐
- Mysql连接问题:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establish ...
- Maven项目中:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create conn
报错信息 详细信息 ERROR [Druid-ConnectionPool-Create-2074541388] - create connection error, url:jdbc:mysql:/ ...
- com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to
困扰了我两天的异常 com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create con ...
- com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException异常解决方法
在使用MySQL驱动进行JDBC时候出现了以下异常 Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQL ...
- com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is not?
问题 :连接MySQL数据库时抛出异常信息: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public ...
- 启动项目出现com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException异常解决方法
启动SpringBoot项目失败mysql连接错误 2020-03-21 20:16:25.193 INFO 8204 --- [ main] com.cnadmart.ApiA ...
- MySQL报错:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException
一.原因分析 原因1:环境配置方面 MySQL版本与驱动版本不匹配.如:MySQL8.0 (8.0版本)搭配 mysql-connector-java-5.1.37.jar(5.0版本) 原因2:代码 ...
- com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 数据库报错
-- 查询mysql 数据库链接空闲时间持有最大空闲时间,单位为秒 SHOW VARIABLES WHERE VAriable_name = 'interactive_timeout'; -- 会出现 ...
- com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'test'
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'test' com.mysql.jdbc.ex ...
最新文章
- 漫画:小白为了面试如何刷题?(呕心沥血算法指导篇)
- CNS级别的插图你也可以实现,只需2天
- SpiderData 2019年2月13日 DApp数据排行榜
- 工业机器人几个自由度_取件冲压上下料机械手和六自由度工业机器人805A
- 基于机器学习的捡球机器人设计与实现(探索)第1篇——树莓派系统的安装与配置(20190106)
- android自定义minitype,MiniType部类以及扩展名
- iPhone放大模式详解
- 字符串系统函数strstr strrchr [5.3有版本不同]
- 车牌识别EasyPR(4)——字符识别MSER
- 从小编程,到架构师,我们应该具备什么
- java基本变量的堆栈_JAVA经验谈:尽可能使用堆栈变量
- 复旦MBAer聊“进博”:希望已至,寻路未来!
- 攻防世界 Reverse logmein
- a标签使用方法和跳转方式
- 显示一个立方体的斜二测图(用数组存放正方体的各顶点坐标)
- 8.9 HITTING SET problem
- 万恶的NPE如何避免,几种你必须知道的方案!!!
- openwrt - 入门( uHTTPd, opkg, uci, luci, mtd等)
- 《高校bbs或者科研论坛》
- 深度挖掘:FIashGet下载隐藏链接[转]