【问题标题】:Spring Boot JPA MySQL : Failed to determine a suitable driver classSpring Boot JPA MySQL:无法确定合适的驱动程序类
【发布时间】: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 或 德比),请把它放在类路径上。如果您有数据库设置 要从特定配置文件加载,您可能需要激活它(不 个人资料当前处于活动状态)。

【问题讨论】:

    标签: mysql hibernate spring-boot


    【解决方案1】:

    我遇到了同样的问题,我通过右键单击项目解决了它,maven/update项目,然后你应该选择你的项目并接受。

    【讨论】:

      【解决方案2】:

      Spring Autoconfigure 会寻找 2 个属性来加载相应的驱动程序,

      1. spring.datasource.driverClassName(在这种情况下,从 MySQL 连接器 4.4.1.3 开始,该值将是“com.mysql.cj.jdbc.Driver”)
      2. 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 来自哪个包?)
              猜你喜欢
              • 2021-09-12
              • 2020-10-23
              • 2023-02-04
              • 2021-01-24
              • 2020-01-14
              • 2019-03-18
              • 2019-05-27
              • 2022-01-19
              • 2021-11-22
              相关资源
              最近更新 更多