运行Spring Boot应用程序时出现DataSource错误

时间:2017-12-22 09:23:28

标签: spring spring-boot

我是Spring boot的新手。我收到此错误

Cannot determine embedded database driver class for database type NONE

每当试图运行我的spring-boot启动web应用程序时(我正在尝试测试执行器和hal浏览器)。在过去八个小时左右的时间里,我在google / stackoverflow上尝试了几个建议。但似乎并不适合我。我仍然在收到另一个错误。

首先尝试: 我遵循了journaldev

中提到的两种方法

如果我使用第一种方法,即注释我的主应用程序类 使用@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class }),我收到此错误:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'javax.sql.DataSource' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

如果我使用第二种方法,我仍然会收到另一个错误:

Binding to target [Bindable@7c551ad4 type = com.zaxxer.hikari.HikariDataSource, value = 'provided', annotations = array<Annotation>[[empty]]] failed:

    Property: driverclassname
    Value: com.mysql.jdbc.Driver
    Origin: "driverClassName" from property source "source"
    Reason: Unable to set value for property driver-class-name

我还尝试了 Andy Wilkinson的 suggestion并添加了

spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost/mydb

到我的 application.properties 文件但是我收到了这个错误:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: com.mysql.jdbc.Driver

我也试过提供用户名和密码(不确定是否需要,因为我没有尝试访问我的数据库),但是对我来说不起作用。如果需要,我也可以提供我的pom配置。

4 个答案:

答案 0 :(得分:5)

以下配置对我来说非常合适 -

application.properties -

error: invalid operand for instruction
   or
while in macro instantiation

pom.xml -

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/rolb
spring.datasource.username=root
spring.datasource.password=root123
spring.datasource.initialize=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

如果需要,您还可以下载我的示例应用程序的源代码进行比较 - https://github.com/atulajoshi24/springboot-rest.git

相同的博客文章 - http://thejavatechie.com/2017/12/21/single-page-application-using-spring-boot-rest-and-angular-1-part-1/

答案 1 :(得分:4)

您说您不需要访问数据库,因此您应该可以使用

@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class })

并删除所有包含数据源的autowirings。 你得到的例外

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'javax.sql.DataSource' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

说你试图在某个地方自动装配数据源,但你没有配置一个(因为你排除了它)。只需删除自动装配的数据源即可。

如果你确实需要使用数据库,那么mysql驱动程序似乎存在问题 - 请确保添加了一个作为依赖项。

答案 2 :(得分:0)

您需要在pom文件中添加JDBC DRIVER依赖项,然后才能工作

答案 3 :(得分:0)

确保pom.xml中存在mysql依赖项,并注释h2依赖项

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>