mysql版本:5.0
mysql驱动版本:mysql-connector-java-3.1.10-bin.jar
.yml配置文件中报错:driver-class-name: com.mysql.jdbc.Drive
.xml文中中依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>3.0.10</version>
<scope>runtime</scope>
</dependency>
报错
1.com.mysql.jdbc.Drive被弃用了。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.
2.如下
2023-06-19 21:18:41.248 ERROR 16884 --- [eate-1279556617] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:mysql://localhost:3306/reggie?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true, errorCode 0, state 08001
java.sql.SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110) ~[mysql-connector-java-8.0.23.jar:8.0.23]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.23.jar:8.0.23]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) ~[mysql-connector-java-8.0.23.jar:8.0.23]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) ~[mysql-connector-java-8.0.23.jar:8.0.23]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73) ~[mysql-connector-java-8.0.23.jar:8.0.23]
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:79) ~[mysql-connector-java-8.0.23.jar:8.0.23]
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:833) ~[mysql-connector-java-8.0.23.jar:8.0.23]
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:453) ~[mysql-connector-java-8.0.23.jar:8.0.23]
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) ~[mysql-connector-java-8.0.23.jar:8.0.23]
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198) ~[mysql-connector-java-8.0.23.jar:8.0.23]
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1644) ~[druid-1.1.23.jar:1.1.23]
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1710) ~[druid-1.1.23.jar:1.1.23]
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2774) ~[druid-1.1.23.jar:1.1.23]
Caused by: com.mysql.cj.exceptions.UnableToConnectException: CLIENT_PLUGIN_AUTH is required
at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483) ~[na:na]
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) ~[mysql-connector-java-8.0.23.jar:8.0.23]
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:85) ~[mysql-connector-java-8.0.23.jar:8.0.23]
at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:115) ~[mysql-connector-java-8.0.23.jar:8.0.23]
at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1350) ~[mysql-connector-java-8.0.23.jar:8.0.23]
at com.mysql.cj.NativeSession.connect(NativeSession.java:157) ~[mysql-connector-java-8.0.23.jar:8.0.23]
at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:953) ~[mysql-connector-java-8.0.23.jar:8.0.23]
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:823) ~[mysql-connector-java-8.0.23.jar:8.0.23]
... 6 common frames omitted
我觉得你应该写错版本了吧,你实际用的mysql-connector-java 是8.0.10。你的数据库mysql是5.0的,所以你这里用 5.1.47就可以了。
Mysql 版本太低了。换一个。
不知道你这个问题是否已经解决, 如果还没有解决的话:根据问题描述,可以看出是在Maven项目中使用SpringBoot连接MySQL5.0数据库时出现了问题,具体问题在yml配置文件中出现了什么错误,提示中提到com.mysql.jdbc.Driver被弃用,新的驱动类为com.mysql.cj.jdbc.Driver。
针对该问题,可以按照以下步骤解决:
修改Maven依赖版本: 根据参考资料中的段落2和段落3,可以通过修改Maven的依赖版本来解决该问题。具体操作为在pom文件中将mysql-connector-java的版本修改为5.1.38或8.0.18即可。
创建lib目录并在其中添加jar包: 根据参考资料中的段落4和段落5,可以在项目中创建一个lib目录,并将mysql-connector-java-8.0.29.jar包放置到该目录下。同时,还需要下载jarjar-1.4.jar工具,将该工具也放置到lib目录中。在lib目录下执行以下命令即可:
java -jar .\jarjar-1.4.jar process .\rule.txt .\mysql-connector-java-8.0.29.jar mysql-connector-java-demo-8.0.29.jar
其中,rule.txt文件是根据mysql-connector-java-8.0.29.jar包中的包名编写的规则文件。执行以上命令后,会生成一个mysql-connector-java-demo-8.0.29.jar包。需要在项目中将该包作为依赖,才能正常连接数据库。
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://host:port/database?useSSL=false&useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root
password: root
其中,driver-class-name需要修改为新的驱动类。其他配置根据实际情况进行修改。
public class Test {
private static String jdbc = "com.mysql.jdbc.Driver";
private static String jdbc8 = "com.mysql.cj.jdbc.Driver";
public static void main(String[] args) {
try {
Class<?> aClass = Class.forName(jdbc);
String name = aClass.getName();
System.out.println("jdbc5.1.24. ->" + name);
Class<?> aClass1 = Class.forName(jdbc8);
String name1 = aClass1.getName();
System.out.println("jdbc8.0.29 ->" + name1);
System.out.println("能够正常加载驱动");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
执行以上代码可以验证是否能够正常加载驱动。
以上就是解决该问题的一些具体步骤,希望能对您有所帮助。