Не удалось настроить DataSource: атрибут 'url' не указан и встроенный источник данных не может быть настроен

Я работаю над Spring Boot Batch примером с MongoDB и уже запустил сервер 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).

application.properties:

# 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>

Я запустил mongod со следующим выводом:

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)

enter image description here

Ответ 1

Ваша проблема заключается в зависимости пружинной партии spring-boot-starter-batch, которая имеет spring-boot-starter-jdbc транзитивную зависимость maven.

Spring Batch - это основа для создания надежных и отказоустойчивых корпоративных пакетных заданий. Он поддерживает множество функций, таких как перезапуск неудачного пакета, запись состояния выполнения пакета и т.д. Чтобы добиться того, что Spring Batch использует схему базы данных для хранения статуса зарегистрированных заданий, автоконфигурация уже предоставляет базовую конфигурацию требуемого источника данных, и именно эта конфигурация требует конфигурации реляционной базы данных.

Для решения этой проблемы вы должны включить драйвер базы данных, например mysql, h2 и т.д., Чтобы настроить url.

Обновление: Для начала вы можете настроить ваш application.yml, как показано ниже:

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

и, конечно, в ваш pom.xml включите d2ver 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 Batch для внутренних возможностей, внутренняя абстракция не полагается на mongo только на jdbc. Тогда монго можно использовать, но для бизнес-части пакета через устройство чтения/записи элементов.

Я надеюсь, что это поможет вам очистить ваши сомнения.

Ответ 2

проверьте ваше приложение. свойства

изменения

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

Ответ 3

Не в вопросе вопроса (может быть связано, хотя), но, если вы запускаете новый проект и задаетесь вопросом, почему вы получаете ту же ошибку, это может происходить из artifactId spring-boot-starter-data-jpa в раздел зависимости. Я дал зависимость ниже. Вам нужно будет определить базу данных, чтобы избавиться от этого.

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

Ответ 4

Ошибка "Не удалось настроить источник данных". Сначала мы устранили проблему, определив источник данных. Далее мы обсудили, как обойти эту проблему, не настраивая источник данных вообще.

https://www.baeldung.com/spring-boot-failed-to-configure-data-source

Ответ 5

Для весенней загрузки версии 2.XX ниже конфигурация работала у меня.

spring.datasource.url=jdbc:mysql://localhost:3306/rest
spring.datasource.username=
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform = org.hibernate.dialect.MySQL5Dialect
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto = update 

Старый драйвер jdbc устарел. Новый упоминается в приведенной выше конфигурации. Пожалуйста, используйте то же самое и перезапустите проект.

Ответ 6

У меня была та же проблема, решенная добавлением <scope>provided</scope>

        <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-jpa</artifactId>
            <scope>provided</scope>
        </dependency>

Источник:https://github.com/spring-projects/spring-boot/issues/13796#issuecomment-413313346

Ответ 7

Я только начинал свой первый весенний загрузочный проект, получил эту ошибку. Эта ссылка помогла. Они показали мне, как добавить/настроить источник данных ИЛИ отложить настройку (это то, что мне было нужно).

Их решение состояло в том, чтобы исключить DataSourceAutoConfiguration.class с помощью

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})

Но это не сработало для меня. Вместо этого я просмотрел сообщение об ошибке для класса AutoConfig, который может быть корнем моей проблемы, и в итоге использовал:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, XADataSourceAutoConfiguration.class})

Не знаю, почему это работает только тогда, когда я исключаю оба класса. Исключение одного из них само по себе не сработало.

Ответ 8

Это просто означает, что вы скачали стартовый код Spring с зависимостью от базы данных без настройки базы данных. Поэтому он не знает, как подключиться. Для загрузочной версии Spring 2.18 выполните следующие шаги, чтобы исправить это.

  1. Создайте базу данных для загруженного вами драйвера, например mysql/mongo и т.д.
  2. В вашем файле applications.properties добавьте информацию о подключении к БД. Образец дается для mysql, если ваш дБ равен mongo, измените его на mongo.

    spring.datasource.url=jdbc:mysql://localhost:3306/db_name_that_you_created spring.datasource.username=your_db_username_here spring.datasource.password=your_db_pass_here 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

  3. Перезагрузите сервер, на котором он будет работать.

Ответ 9

Просто добавьте: @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class }) работает для меня.

Я получаю ту же ошибку, которую пытался с @EnableAutoConfiguration (exclude =...) не работает.

Ответ 10

Добавление зависимости h2 к файлу pom может решить такие проблемы....... com.h2database h2......

Ответ 11

В моем случае

spring.profiles = production // remove it to fix

в application.properties была причина