Thu*_*yen 5 mysql spring spring-data-jpa spring-boot
我的 Spring Boot 项目尝试使用 driver 连接到 MYSQL 数据库mysql-connector-java。我已经导入最新的 mysql 驱动程序并且spring-boot-starter-data-jpa
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
application.properties我已经在文件中配置了数据库连接
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/db_example
spring.datasource.username=somethingfunny
spring.datasource.password=somethingfunny
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
#spring.jpa.show-sql: true
Run Code Online (Sandbox Code Playgroud)
MYSQL版本是8.0.26
春季启动版本2.6.2
当使用 Intellij 运行项目时出现错误
引起:org.springframework.beans.BeanInstantiationException:无法实例化[com.zaxxer.hikari.HikariDataSource]:工厂方法“dataSource”抛出异常;嵌套异常是 java.lang.IllegalStateException:无法加载驱动程序类:com.mysql.cj.jdbc.Driver at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans- 5.3.14.jar:5.3.14] 在 org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.14.jar:5.3.14] ...省略了 35 个常见框架 原因:java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver at org.springframework.util.Assert.state(Assert.java:97) ~[spring-core- 5.3.14.jar:5.3.14] 在 org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.defineDriverClassName(DataSourceProperties.java:241) ~[spring-boot-autoconfigure-2.6.2.jar:2.6.2] 在org.springframework.boot.autoconfigure.jdbc.DataSourceProperties.initializeDataSourceBuilder(DataSourceProperties.java:193) ~[spring-boot-autoconfigure-2.6.2.jar:2.6.2] 在 org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration .createDataSource(DataSourceConfiguration.java:48) ~[spring-boot-autoconfigure-2.6.2.jar:2.6.2] 在 org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari.dataSource(DataSourceConfiguration.java:90) 〜[spring-boot-autoconfigure-2.6.2.jar:2.6.2] 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 〜[na:na] 在 java.base/jdk.internal .reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na] 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] 在 java.base /java.lang.reflect.Method.invoke(Method.java:566) ~[na:na] 在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans- 5.3.14.jar:5.3.14] ... 省略36个常用框架
我参考了关于Cannot load driver class: com.mysql.jdbc.Driver (NOT com.mysql.cj.jdbc.Driver)的帖子,我无法申请我的项目,因为我的项目在使用时出错,com.mysql.cj.jdbc.Driver但没有com.mysql.jdbc.Driver。
我还引用了这篇文章Cannot load driver class: com.mysql.cj.jdbc.Driver。但我找不到此错误的正确答案(答案已标记为已更正)。
如何修复此错误?
小智 5
1)在pom.xml中使用此依赖项
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
2) 在 application.properties 文件中使用此属性
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Run Code Online (Sandbox Code Playgroud)
您检查过您拥有哪个版本的 MySQL 连接器吗?
由于您没有在 pom.xml 中指定版本,因此它有可能提取版本 5,现在它抱怨版本 8 所需的 .cj。
这可能是它在没有 .cj ( com.mysql.jdbc.Driver ) 的情况下工作的原因,因为它提取了版本 5。在 pom.xml 中手动添加该版本并保持 .cj 原样。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
编辑:
如果您在 Maven 中心访问它,则来自上面的此依赖项
https://mvnrepository.com/artifact/mysql/mysql-connector-java
现已移至
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.32</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
编辑:
之后,请确保提取依赖项。但如果您在“mvn clean install”之后只有版本 8,请确保签入您的项目。
截至您共享“mysql版本”的图片,这没有任何意义,例外是关于mysql-connector jar,它与工作台无关,您仍然可以使用工作台版本5,并使用mysql-connector jar版本8 ,这没有什么区别。
在任何版本的 mysql workbench(5 或 8)中:
mysql-connector 8 jar = 需要 .cj
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Run Code Online (Sandbox Code Playgroud)
mysql-connector 5 jar = 不需要 .cj
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
Run Code Online (Sandbox Code Playgroud)
您唯一需要做的就是在 pom.xml 中定义 mysql-connector-java 的版本
| 归档时间: |
|
| 查看次数: |
13494 次 |
| 最近记录: |