Spring Boot JPA MySQL:无法确定合适的驱动程序类

时间:2019-07-29 04:34:33

标签: mysql hibernate spring-boot

我正在使用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-   [main] o.s.web.context.ContextLoader:根   WebApplicationContext:初始化在1534毫秒内完成2019-07-29   10:03:00.789 WARN 10356 --- [main]   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   INFO 10356 --- [main]   o.apache.catalina.core.StandardService:正在停止服务[Tomcat]   2019-07-29 10:03:00.805 INFO 10356 --- [主]   ConditionEvaluationReportLoggingListener:

     

启动ApplicationContext时出错。显示条件报告   在启用“调试”的情况下重新运行您的应用程序。 2019-07-29 10:03:00.805   错误10356 --- [主]   o.s.b.d.LoggingFailureAnalysisReporter:

     

********************************应用程序无法启动

     
     

说明:

     

无法配置数据源:未指定'url'属性,并且   无法配置嵌入式数据源。

     

原因:无法确定合适的驱动程序类别

     

操作:

     

请考虑以下事项:如果要嵌入式数据库(H2,HSQL或   Derby),请将其放在类路径上。如果您有数据库设置   要从特定配置文件加载您可能需要激活它(否   个人资料当前处于活动状态)。

6 个答案:

答案 0 :(得分:0)

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();
    }
}

答案 1 :(得分:0)

这是我无法检测到的配置错误,我重新创建了相同的项目,一切开始正常工作

答案 2 :(得分:0)

更改:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb

收件人:

spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/mydb

答案 3 :(得分:0)

我也有这个问题。我的解决方案是:打开模块设置,然后选择资源,然后右键单击它,然后选择“测试资源”。然后解决了。

setting page

答案 4 :(得分:0)

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 并且它可以从那里派生驱动程序类名。

答案 5 :(得分:0)

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