web-dev-qa-db-fra.com

Échec de la configuration d'une source de données: l'attribut 'url' n'est pas spécifié et aucune source de données intégrée n'a pu être configurée.

Je travaille sur l'exemple Spring Boot Batch avec MongoDB et j'ai déjà démarré le serveur Mongod

Lorsque je lance mon application, j'obtiens l'erreur ci-dessous.

Des indicateurs pour ce problème?

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

J'ai commencé 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

40
Jeff Cook

votre problème est la dépendance du lot printanier spring-boot-starter-batch qui a une dépendance printitive-boot-starter-jdbc transitive maven.

Spring Batch est un cadre permettant de créer des lots d'entreprise fiables et à tolérance de pannes. Il prend en charge de nombreuses fonctionnalités telles que les tentatives de redémarrage d'un lot en échec, le statut d'enregistrement de l'exécution du lot, etc. Afin de réaliser ce lot de printemps, utilisez un schéma de base de données pour stocker le statut des travaux enregistrés. La configuration automatique vous fournit déjà la configuration de base de la source de données requise. Cette configuration nécessite la configuration de la base de données relationnelle.

Pour résoudre ce problème, vous devez inclure un pilote de base de données tel que mysql, h2, etc., et configurer l’url.

Mise à jour Juste pour commencer, vous pouvez configurer votre application.yml comme ci-dessous:

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

et bien sûr, dans votre pom.xml, incluez le répertoire 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>

La raison pour laquelle vous ne pouvez pas utiliser mongo pour cette option est que l'utilisation de mongo est uniquement fournie pour la lecture/l'écriture d'éléments et non pour la gestion de la base de données interne du lot de printemps qui est un schéma interne et non un schéma métier. Les requêtes sont des requêtes SQL simples et l'abstraction interne repose sur une base de données relationnelle. Il est nécessaire d’avoir une base de données avec une capacité ACID car chaque lot lit et écrit un bloc de travail et enregistre des informations afin de relancer le travail, un NoSql n’est pas adapté à cette tâche.

A la fin, vous avez configuré une base de données de relations afin de préparer le lot de ressort pour la capacité interne. L'abstraction interne ne relaie pas sur Mongo uniquement sur jdbc. Ensuite, mongo peut être utilisé mais pour le côté commercial du lot via un lecteur/graveur d’items.

J'espère que cette réflexion pourra vous aider à dissiper vos doutes.

19
Valerio Vaudi

vérifiez votre application.properties

en changeant

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

à

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

a travaillé pour moi. Configuration complète:

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
17
jarosik

Pas au point de la question (peut être lié cependant), mais, si vous bootstrap un nouveau projet et vous demandez pourquoi obtenez-vous la même erreur, elle peut provenir de la artifactId de spring-boot-starter-data-jpa dans la section des dépendances. J'ai donné la dépendance ci-dessous. Vous devrez définir la base de données pour vous en débarrasser.

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

Erreur "Impossible de configurer une source de données". Tout d'abord, nous avons résolu le problème en définissant la source de données. Nous avons ensuite expliqué comment résoudre le problème sans configurer la source de données.

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

3
Roger Pc

Pour la version de démarrage printanière 2.X.X la configuration ci-dessous a fonctionné pour moi.

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 

Ancien pilote jdbc est obsolète. Le nouveau est mentionné dans la configuration ci-dessus. S'il vous plaît utilisez le même et redémarrez le projet.

1
Vinod

J'ai eu le même problème résolu par add <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>

Source: https://github.com/spring-projects/spring-boot/issues/13796#issuecomment-413313346

0
Zakhar Telyatnikov