Spring Boot JPA MySQL:无法确定合适的驱动程序类
Posted
技术标签:
【中文标题】Spring Boot JPA MySQL:无法确定合适的驱动程序类【英文标题】:Spring Boot JPA MySQL : Failed to determine a suitable driver class 【发布时间】:2019-12-06 09:42:12 【问题描述】:我正在使用 Spring Boot JPA 创建应用程序,我正在使用 mysql 作为数据库。
以下是我的 application.properties
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
我添加了以下依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
当我检查调试日志时,我可以在我的类路径中看到 mysql java 连接器,但我仍然收到以下错误
2019-07-29 10:03:00.742 信息 10356 --- [主要] o.a.c.c.C.[Tomcat].[localhost].[/]:初始化 Spring 嵌入式 WebApplicationContext 2019-07-29 10:03:00.742 信息 10356 --- [主] os.web.context.ContextLoader:根 WebApplicationContext:初始化在 1534 毫秒内完成 2019-07-29 10:03:00.789 警告 10356 --- [主要] ConfigServletWebServerApplicationContext:遇到异常 在上下文初始化期间 - 取消刷新尝试: org.springframework.beans.factory.UnsatisfiedDependencyException: 创建具有名称的 bean 时出错 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration': 通过构造函数参数 0 表示的不满足的依赖关系; 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建在类路径资源中定义的名称为“dataSource”的bean [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: 通过工厂方法实例化 Bean 失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:失败 实例化 [com.zaxxer.hikari.HikariDataSource]:工厂方法 'dataSource' 抛出异常;嵌套异常是 org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: 无法确定合适的驱动程序类 2019-07-29 10:03:00.789 信息 10356 --- [主要] o.apache.catalina.core.StandardService :停止服务 [Tomcat] 2019-07-29 10:03:00.805 信息 10356 --- [主要] ConditionEvaluationReportLoggingListener:
启动 ApplicationContext 时出错。显示条件报告 在启用“调试”的情况下重新运行您的应用程序。 2019-07-29 10:03:00.805 错误 10356 --- [主要] o.s.b.d.LoggingFailureAnalysisReporter:
***************************应用程序启动失败
说明:
未能配置数据源:未指定“url”属性并且 无法配置嵌入式数据源。
原因:无法确定合适的驱动程序类
行动:
考虑以下几点:如果您想要一个嵌入式数据库(H2、HSQL 或 德比),请把它放在类路径上。如果您有数据库设置 要从特定配置文件加载,您可能需要激活它(不 个人资料当前处于活动状态)。
【问题讨论】:
【参考方案1】:我遇到了同样的问题,我通过右键单击项目解决了它,maven/update项目,然后你应该选择你的项目并接受。
【讨论】:
【参考方案2】:Spring Autoconfigure 会寻找 2 个属性来加载相应的驱动程序,
-
spring.datasource.driverClassName(在这种情况下,从 MySQL 连接器 4.4.1.3 开始,该值将是“com.mysql.cj.jdbc.Driver”)
spring.datasource.url(在本例中为 jdbc:mysql://localhost:3306/mydb)
其实 Spring Autoconfigure 只需要 spring.datasource.url 就可以从中派生出驱动类名。
【讨论】:
【参考方案3】:我也有这个问题。我的解决方案是:打开模块设置,选择资源,然后右键单击它,然后选择“测试资源”。然后就解决了。
【讨论】:
【参考方案4】:改变:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
到:
spring.datasource.url=jdbc:mysql://$MYSQL_HOST:localhost:3306/mydb
【讨论】:
【参考方案5】:这是我无法检测到的配置中的一些错误,我重新创建了相同的项目并开始工作
【讨论】:
【参考方案6】:Spring Boot 自动配置尝试根据添加到类路径的依赖项自动配置 bean。由于您的类路径具有 JPA 依赖项,因此 Spring Boot 尝试自动配置 JPA 数据源。问题是,您没有向 Spring 提供执行自动配置所需的完整信息。
将此缺少的属性添加到您的application.properties
文件中,以便spring 可以自动配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
您可以通过使用实用程序构建器类 DataSourceBuilder 以编程方式定义数据源的另一种方式。为此,您需要提供数据库 URL、用户名、密码和 SQL 驱动程序信息来创建数据源:
@Configuration
public class DatasourceConfig
@Bean
public DataSource datasource()
return DataSourceBuilder.create()
.driverClassName("com.mysql.cj.jdbc.Driver")
.url("jdbc:mysql://localhost:3306/myDb")
.username("root")
.password("pass")
.build();
【讨论】:
我也试过这个,但仍然继续得到同样的错误。我还缺少其他东西吗? 试试这个spring.datasource.driver-class-name=com.mysql.jdbc.Driver
。让我知道。
尝试将其更改为“com.mysql.cj.jdbc.Driver”,用于 8.0 及更高版本的 my-sql 连接器。
@kashishverma 我尝试了您的建议,但不幸的是,事情似乎不起作用。谢谢你的帮助。让我删除项目并创建一个新项目
请指出包...找到应该使用哪个包是一件很痛苦的事...(DataSource 来自哪个包?)以上是关于Spring Boot JPA MySQL:无法确定合适的驱动程序类的主要内容,如果未能解决你的问题,请参考以下文章
spring boot data jpa mysql无法创建数据库
Spring Boot + Spring Data JPA + 事务无法正常工作
Spring-Boot,无法使用 spring-data JPA 在 MySql 中保存 unicode 字符串
Spring-Boot,无法使用spring-data JPA在MySql中保存unicode字符串
Spring Boot - Mysql Driver - JPA - 在服务器运行发布请求很长时间后显示无法打开 JPA EntityManager 进行事务处理