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 进行事务处理

Spring Boot、JPA 和 MySQL 返回空结果