无法自动配置DataSource:未指定“spring.datasource.url”

时间:2018-03-25 11:14:36

标签: java spring mongodb spring-boot spring-data-jpa

我已经使用Web,MongoDB和JPA依赖项从 SPRING INITIALIZR 创建了一个基本的Spring启动应用程序。

当我尝试运行spring boot应用程序时,我遇到以下异常:

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2018-03-25 16:27:02.807 ERROR 16256 --- [  restartedMain] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to auto-configure a DataSource: 'spring.datasource.url' is not specified and no embedded datasource could be auto-configured.
Reason: Failed to determine a suitable driver class

Action:

Consider the following situation:
If you want an embedded database like H2, HSQL or Derby, please add it in the Classpath.
If you have database settings to be loaded from a particular profile you may need to activate it since no profiles were currently active.

在application.properties文件中,我有以下配置:

server.port=8081
spring.data.mongodb.database=TestDatabase
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017

我使用的版本: 春天:5.0.4, MongoDB:3.6, Spring Boot:2.0

12 个答案:

答案 0 :(得分:66)

由于您已在pom.xml文件中添加了mongodb和data-jpa依赖项,因此它正在创建依赖性冲突,如下所示

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

尝试删除jpa依赖项并运行。它应该工作正常。

答案 1 :(得分:33)

转到application.properties所在的资源文件夹,更新下面的代码。

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

答案 2 :(得分:16)

在资源文件夹下的 application.properties 文件中添加以下行,然后重新启动您的应用程序。

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

答案 3 :(得分:2)

似乎缺少MongoDB驱动程序。在pom.xml中包含以下依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

答案 4 :(得分:1)

您基于数据的依赖关系正在尝试查找尚未创建的各个实体,然后对基于数据的依赖关系进行注释并再次运行该应用程序。

<!-- <dependency> -->
        <!-- <groupId>org.springframework.boot</groupId> -->
        <!-- <artifactId>spring-boot-starter-data-jpa</artifactId> -->
        <!-- </dependency> -->

答案 5 :(得分:1)

当您将JPA依赖项放入spring-boot配置文件(例如在maven或gradle中)时,发生此错误。 解决方案是:Spring-Boot Documentation

您必须在application.properties文件中指定数据库连接字符串和驱动程序详细信息。这样可以解决问题。 这可能对某人有帮助。

答案 6 :(得分:1)

我遇到此错误的原因仅仅是因为我在 application.properties 文件中拼写了spring.datasource.url值,并且我使用的是postgresql:

问题是: jdbc:postgres://localhost:<port-number>/<database-name>

固定为: jdbc:postgresql://localhost:<port-number>/<database-name>

注意:区别是postgrespostgresql,两者是2种不同的东西。

可以找到更多的原因和解决方法here

答案 7 :(得分:0)

添加依赖项,例如mongodb,web,jpa。删除/清除其余的内容。

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
</dependencies>

答案 8 :(得分:0)

在gradle构建中,我只是:

compile('org.springframework.boot:spring-boot-starter-data-jpa') compile('org.springframework.boot:spring-boot-starter-security') compile('org.springframework.boot:spring-boot-starter-web') compile('org.springframework.boot:spring-boot-devtools')

已删除

**`compile('org.springframework.boot:spring-boot-starter-data-jpa')`**

对我有用。

答案 9 :(得分:0)

当我只是在application.properties中错误输入我的jdbc url时,我遇到了这个问题。希望这对某人有帮助: 之前:

spring.datasource.url=jdbc://localhost:3306/test

之后:

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

答案 10 :(得分:0)

@Bhabadyuti Bal给我们一个很好的答案,在gradle中,您可以使用:

compile 'org.springframework.boot:spring-boot-starter-data-jpa' 
compile 'com.h2database:h2'

测试时间:

testCompile 'org.reactivecommons.utils:object-mapper:0.1.0'
testCompile 'com.h2database:h2'

答案 11 :(得分:-1)

添加org.apache.derby依赖关系解决了我的问题。

<dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derby</artifactId>
            <scope>runtime</scope>
        </dependency>