【问题标题】:Spring boot Bean exception: Cannot determine embedded database driver class for database type NONESpring boot Bean异常:无法确定数据库类型NONE的嵌入式数据库驱动程序类
【发布时间】:2018-03-28 22:27:07
【问题描述】:

我正在尝试运行其他人制作的 Spring Boot 应用程序。我试图将我的本地数据库附加到应用程序,但是当我运行它时,它给出了以下错误;

org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration”的bean时出错:注入自动装配的依赖项失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法自动装配字段:私有 javax.sql.DataSource org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration.dataSource;嵌套异常是 org.springframework.beans.factory.BeanCreationException:在类路径资源 [org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration$NonEmbeddedConfiguration.class] 中定义名称为“dataSource”的 bean 创建时出错:通过工厂方法进行 Bean 实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[javax.sql.DataSource]:工厂方法'dataSource'抛出异常;嵌套异常是 org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException:无法确定数据库类型 NONE 的嵌入式数据库驱动程序类。如果您想要一个嵌入式数据库,请在类路径中放置一个受支持的数据库。如果您有要从特定配置文件加载的数据库设置,您可能需要激活它(当前没有配置文件处于活动状态)。

我是新手,我无法找出问题所在。一些细节:

其中 xxx = 数据库名称。

工作台:

Name: Local instance wampmysqld64
Host: localhost
Port: 3306
Server: MySQL Community Server (GPL)
Version: 5.7.18-log
Connector: C++ 1.1.4 
Login User: root
Current User: root@localhost
SSL: Disabled

服务器已启动并正在运行。

编辑

pom.xml

<project>

<modelVersion>4.0.0</modelVersion>

<groupId>****</groupId>
<artifactId>****</artifactId>
<version>0.0.1-SNAPSHOT</version>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.6.RELEASE</version>
</parent>

<dependencies>
    <dependency>
      <groupId>org.modelmapper</groupId>
      <artifactId>modelmapper</artifactId>
      <version>1.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</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>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

</project>

EDIT2

Application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/xxx
spring.datasource.username=root
spring.datasource.password=root

spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialect
spring.jpa.properties.hibernate.id.new_generator_mappings = false
spring.jpa.properties.hibernate.format_sql = true
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE 

ng.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

Application.java

package gdprserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.data.rest.RepositoryRestMvcAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;

@SpringBootApplication(exclude = RepositoryRestMvcAutoConfiguration.class)
public class Application extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(final SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(final String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    public ModelMapper modelMapper() {
        return new ModelMapper();
    }
}

EDIT3

我使用 CMD 运行 Spring boot 应用程序,使用命令:java -jar xxx.jar

【问题讨论】:

  • 你确定你的application.properties 文件在类路径上(最好是src/main/resources?还要显示你的@SpringBootApplication
  • application.properties 位于src/main/resourcesyes。
  • 没有 spring-boot-starter-jdbc 或 spring-boot-starter-data-jpa?
  • 修复依赖项后,如果 Spring 出于未知原因仍然找不到要实例化的驱动程序类(它应该从该驱动程序的 URL 中为 mySQL 推断它),您可以添加一个显式命名它的属性像这样:spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  • 感谢您的帮助@GerryMantha。不幸的是,这并不能解决问题。

标签: java mysql spring spring-boot mysql-workbench


【解决方案1】:
package com.fyakuthibernatespringboot.demo;


@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

【讨论】:

  • 只添加一个代码示例没有解释不是很有用。
【解决方案2】:

异常“无法确定数据库类型 NONE 的嵌入式数据库驱动程序类。”是由 Spring 无法找到定义数据库的属性引起的。它告诉我们它没有创建/配置数据源所需的信息。

这可能是与 IDE 相关的问题。使用 maven 构建你的 jar 并尝试运行它。如果您遇到相同的异常,请打开 jar 并查看其中以确保它被正确添加。

【讨论】:

    【解决方案3】:

    我找到了使用 Eclipse 运行我的应用程序的解决方案。

    在我尝试使用 Java Application -> SpringApplication 和主类运行我的应用程序之前:org.springframework.boot.SpringApplication。将主类更改为 xxx.Application(其中 xxx 是项目名称)有效。

    【讨论】:

      猜你喜欢
      • 2014-07-27
      • 1970-01-01
      • 2018-06-18
      • 2016-02-16
      • 2018-07-10
      • 2019-04-09
      • 2017-07-30
      • 2018-02-12
      相关资源
      最近更新 更多