当前位置: 首页 > 知识库问答 >
问题:

未能配置数据源:“url”属性未指定,无法配置嵌入式数据源

文英达
2023-03-14

我正在使用MongoDB开发一个Spring Boot批处理示例,并且我已经启动了mongod服务器。

当我启动我的应用程序时,我得到下面的错误。

对这个问题有什么建议吗?

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class


Action:

Consider the following:
    If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
    If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).

应用特性:

# Mongo database URI. Cannot be set with host, port and credentials.
spring.data.mongodb.uri=mongodb://localhost/test 

pom.xml

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

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

我用以下输出启动了mongos

C:\Users\pc>mongod
2018-07-07T14:39:39.223+0530 I JOURNAL  [initandlisten] journal dir=C:\data\db\journal
2018-07-07T14:39:39.230+0530 I JOURNAL  [initandlisten] recover : no journal files present, no recovery needed
2018-07-07T14:39:39.478+0530 I JOURNAL  [durability] Durability thread started
2018-07-07T14:39:39.589+0530 I CONTROL  [initandlisten] MongoDB starting : pid=11992 port=27017 dbpath=C:\data\db\ 64-bit host=DESKTOP-NQ639DU
2018-07-07T14:39:39.589+0530 I CONTROL  [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
2018-07-07T14:39:39.591+0530 I CONTROL  [initandlisten] db version v3.0.5
2018-07-07T14:39:39.592+0530 I CONTROL  [initandlisten] git version: 8bc4ae20708dbb493cb09338d9e7be6698e4a3a3
2018-07-07T14:39:39.592+0530 I CONTROL  [initandlisten] build info: windows sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1') BOOST_LIB_VERSION=1_49
2018-07-07T14:39:39.592+0530 I CONTROL  [initandlisten] allocator: tcmalloc
2018-07-07T14:39:39.593+0530 I CONTROL  [initandlisten] options: {}
2018-07-07T14:39:39.595+0530 I JOURNAL  [journal writer] Journal writer thread started
2018-07-07T14:39:40.485+0530 I NETWORK  [initandlisten] waiting for connections on port 27017
2018-07-07T14:40:39.140+0530 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:51340 #1 (1 connection now open)
2018-07-07T14:40:41.663+0530 I NETWORK  [conn1] end connection 127.0.0.1:51340 (0 connections now open)
2018-07-07T14:45:12.421+0530 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:51578 #2 (1 connection now open)
2018-07-07T14:45:12.870+0530 I NETWORK  [conn2] end connection 127.0.0.1:51578 (0 connections now open)
2018-07-07T14:46:21.734+0530 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:51591 #3 (1 connection now open)
2018-07-07T14:46:22.041+0530 I NETWORK  [conn3] end connection 127.0.0.1:51591 (0 connections now open)
2018-07-07T14:57:47.523+0530 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:52534 #4 (1 connection now open)
2018-07-07T14:57:47.910+0530 I NETWORK  [conn4] end connection 127.0.0.1:52534 (0 connections now open)

共有3个答案

辛渝
2023-03-14

您的问题是springbatchspringbootstarterbatch的依赖关系,它具有一个springbootstarterjdbctransitivemaven依赖关系。

Spring Batch是一个用于构建可靠和容错的企业批处理作业的框架。它支持许多功能,如重新启动失败的批处理,记录批处理执行的状态等。为了实现Spring Batch使用数据库模式来存储注册作业的状态,自动配置已经为您提供了所需数据源的基本配置,正是这种配置需要关系数据库配置。

要解决这个问题,您必须包括一些数据库驱动程序,如mysqlh2等,以配置url

更新:只是为了入门,您可以配置您的应用程序。yml如下:

spring:
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:mem:localhost;DB_CLOSE_ON_EXIT=FALSE
    username: admin
    password:

当然,在你的pom中。xml包括h2指令,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
       ....
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>

....
    </dependencies>
...

</project>

之所以这样做,是因为您不能将mongo用于此目的,是因为mongo的使用仅提供给条目读取器和写入器,而不是用于管理Spring Batch的内部数据库,该数据库是一个内部模式,而不是业务模式。查询是纯SQL查询,内部抽象依赖于关系数据库。必须有一个具有ACID功能的数据库,因为每个批都读取和写入一块工作,并保存该信息,以便重新启动作业。NoSql解决方案不适用于此。

最后,为了准备Spring批处理的内部功能,您配置了一个关系数据库,内部抽象并不仅仅依赖于jdbc上的mongo。然后可以使用mongo,但需要通过item reader/writer用于批处理的业务端。

我希望这能帮助你消除疑虑。

督冠玉
2023-03-14

检查你的application.properties

改变

spring.datasource.driverClassName=com.mysql.jdbc.Driver

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

为我工作。完整配置:

spring.datasource.url=jdbc:mysql://localhost:3306/db
spring.datasource.username=
spring.datasource.password=   
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.database-platform = org.hibernate.dialect.MySQL5Dialect
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto = update
冯卓
2023-03-14

只需添加:@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})适合我。

我遇到了与@EnableAutoConfiguration(exclude=…)相同的错误 不起作用。

 类似资料:
  • 我已经检查了所有类似的问题,每个答案都说我需要指定一个driverClassName,我已经这样做了。这是我的申请表。yml: 我错过了什么吗?奇怪的是,我的一个有相同代码的同学可以很好地启动应用程序。这就是为什么我认为这与路径有关。也许Spring没有访问yml文件。我把它包含在src.main.resources中,这是Spring查找它的默认位置。这是堆栈跟踪: 这是Gradle构建,我被要

  • 编辑问题以包括所需的行为、特定问题或错误,以及再现问题所需的最短代码。这将帮助其他人回答这个问题。 我的application.properties是: 当我进行maven Build并尝试运行主SpringBoot类时,我收到以下消息:

  • 我正在尝试实现使用2个数据库的Spring应用程序。我尝试了这个: 应用属性 配置Bean: 但是当我启动应用程序时,我收到错误: 你知道我如何解决这个问题吗?

  • 一直致力于使用Spring开发微服务。我已经成功地写了几个,但是,最后一个失败了,我不知道为什么。 我的申请。属性: (别担心,密码包含在application.properties) 已尝试添加和删除: Spring自动配置。排除=组织。springframework。靴子自动配置。jdbc。数据源自动配置 我的pom。xml 我的主要: @SpringBootApplication公共类Aut

  • 我在pom下面有这个。xml文件。我在尝试运行应用程序时收到此错误消息。未能配置数据源:“url”属性未指定,无法配置嵌入式数据源。 我在谷歌上搜索过,很少有人说这个问题不应该出现在内存数据库版本中,比如H2、Derby等。然而,我遇到了这个问题。 尝试更新application.properties 和 但是没有喘息的机会。请让我知道我错过了什么/在哪里。

  • 我的项目昨天运行得很好,但今天我运行它时它突然报告了一个错误。 2019-06-04 19:09:57.206信息18231---[restartedMain]条件评估报告日志监听器: 启动应用程序上下文时出错。要显示条件报告,请在启用调试的情况下重新运行应用程序。2019-06-04 19:09:57.207ERROR 18231 --- [ restartedMain]o. s. b. d.