programing

데이터 소스를 구성하지 못했습니다. 'url' 특성이 지정되지 않았으며 포함된 데이터 소스를 구성할 수 없습니다.

javamemo 2023. 4. 5. 21:13
반응형

데이터 소스를 구성하지 못했습니다. 'url' 특성이 지정되지 않았으며 포함된 데이터 소스를 구성할 수 없습니다.

저는 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)

여기에 이미지 설명 입력

: ★★★★★★★★★★★★★」@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })잘 먹히네요.

가 도했던 with with with with with with with with with with with with with with with with with with with i i i i i i i i에서 시도했던 것과 같은 에러가 하고 있었다.@EnableAutoConfiguration(exclude=...)효과가 없었습니다.

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })사용자로부터도 요구되고 있습니다.src > main > java 아래에 있는 메인 어플리케이션클래스에 추가해야 합니다.디폴트로는 다음과 같이 설정되어 있습니다.@SpringBootApplication

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

입니다.spring-boot-starter-batch가가 a that spring-boot-starter-jdbc과도적 의존성.

Spring Batch는 신뢰성이 높고 폴트 톨러런스한 엔터프라이즈 배치 작업을 구축하기 위한 프레임워크입니다.실패한 배치 재시작, 배치 실행 상태 기록 등 많은 기능을 지원합니다.등록된 작업의 상태를 저장하기 위해 Spring Batch가 데이터베이스 스키마를 사용하기 위해 자동 구성을 통해 필요한 데이터 소스의 기본 구성이 이미 제공되고 있으며 이 구성이 릴레이셔널 데이터베이스 구성을 필요로 합니다.

하려면 , 「Database Driver」등의 가 있습니다.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:

당신의 your your your your your your your your your your pom.xmlh2 디르버

<?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 솔루션이 적합하지 않습니다.

마지막으로 내부 기능을 위한 스프링 배치를 준비하기 위해 관계형 데이터베이스를 설정했지만 내부 추상화는 jdbc에만 mongo에 의존하지 않습니다.그러면 mongo를 아이템 리더/라이터를 통해 비즈니스 측면에서 사용할 수 있습니다.

이것이 당신의 의심을 푸는 데 도움이 되기를 바랍니다.

근본 원인

JPA(Java persistence API)는 ORM(Object-Relational Mapping) 툴의 Java 사양입니다.spring-boot-starter-data-jpa 의존관계에 따라 스프링 부트프레임워크 컨텍스트에서 ORM이 네이블이 됩니다

스프링 부트애플리케이션의 JPA 자동 설정 기능은, JPA 데이터 소스를 사용해 데이타베이스 접속을 확립하려고 합니다.JPA DataSource bean을 사용하려면 데이터베이스 드라이버가 필요합니다.

데이터베이스 드라이버는 pom.xml 파일의 의존관계로 사용할 수 있어야 합니다.Oracle, SQL Server, MySql, DB2, Postgres, MongoDB 등의 외부 데이터베이스의 경우 연결을 설정하려면 데이터베이스 JDBC 연결 속성이 필요합니다.

이 예외를 수정하려면 데이터베이스 드라이버와 JDBC 연결 속성을 구성해야 합니다. DataSource를 구성하지 못했습니다. 'url' 특성이 지정되지 않았으며 포함된 데이터 소스를 구성할 수 없습니다.이유:적절한 드라이버 클래스를 결정하지 못했습니다.

application.properties

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

application.syslogl

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

프로그래밍별

@SpringBootApplication(exclude =  {DataSourceAutoConfiguration.class })

될 수 했을 때 에러가 , 그 는, 「」(이러다), 「이러다」(이러다)로부터.artifactIdspring-boot-starter-data-jpa를 참조해 주세요.저는 아래의 의존관계를 알려드렸습니다.이를 제거하려면 데이터베이스를 정의해야 합니다.

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

<고객명>님 제외DataSourceAutoConfiguration.class: 작업 완료:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })

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

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

링크가 도움이 되었습니다.

스프링 부트 자동 설정은 클래스 패스에 추가된 의존관계에 따라 콩을 자동으로 설정하려고 합니다.클래스 패스에 JPA 의존관계(spring-data-starter-jpa)가 있기 때문에 클래스 패스는 이를 설정하려고 합니다.

문제:스프링 부트에는 JPA 데이터 소스(JDBC 연결 속성)를 구성하는 데 필요한 모든 정보가 포함되어 있지 않습니다.솔루션:

  1. JDBC 연결 속성 제공(최적)
  2. 일부 AutoConfig 클래스를 제외하여 연결 속성 제공을 연기합니다(임시 - 최종적으로 삭제해야 함).

에서는 " "는 됩니다.DataSourceAutoConfiguration.class 함께

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})

하지만 이건 나에게 효과가 없었다.대신 2개의 AutoConfig 클래스를 제외해야 했습니다.

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

Spring Initializr를 통해 프로젝트를 작성할 때 리소스 디렉토리가 클래스 경로에 추가되지 않을 수 있습니다.따라서 어플리케이션은 설정한application.properties 파일을 로드하지 않습니다.

이 경우 빠른 테스트를 수행하려면 application.properties 파일에 다음 항목을 추가합니다.

server.port=8081

이제 응용 프로그램을 실행할 때 스프링 부트 콘솔 출력에 다음과 같은 내용이 표시됩니다.

INFO  o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): **8081** (http) with context path ''

포트가 여전히 기본 8080이고 8081로 변경되지 않은 경우 application.properties 파일은 로드되지 않습니다.

, 이 한한음음음음음음음음음음음음음음음음음음음음 with with with with with with with with로 실행되는지 확인할 수 .gradle bootRun맨맨드커아마 일이 될 거야

솔루션:

  1. IntelliJ를 닫고 프로젝트 폴더 내에서 ".idea" 폴더를 삭제합니다.
  2. 프로젝트 Import -> Import할 build.gradle 파일만 선택해주세요.(IntelliJ는 자동으로 나머지 파일을 가져옵니다)
  3. 응용 프로그램 빌드 및 재실행

인텔리J 지원 공식 답변 보기: IDEA-221673

"DataSource 구성 실패" 오류입니다.먼저 데이터 소스를 정의하여 문제를 해결했습니다.다음으로 데이터 소스를 전혀 설정하지 않고 문제를 해결하는 방법에 대해 설명했습니다.

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

스프링 부트 애플리케이션의 메인 클래스에 이 주석을 추가했는데 모든 것이 완벽하게 작동하고 있습니다.

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })

코드에서도 같은 문제에 직면했습니다.어플리케이션.java 파일에 이 코드를 추가하면 도움이 되었습니다.

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

최신 2021 스프링 부트 릴리스 2.5.0의 개요

application.properties에 이러한 엔트리가 최소한 있는 경우

spring.datasource.url=jdbc:mysql://localhost:3306/db
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

그리고 당신의 pom.xml의 이러한 의존관계는

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

다음의 에러는 발생하지 않습니다.

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

제 경우는 IDE였습니다.

이클립스 또는 인텔리지를 사용하는 경우에도 실제 환경에서는 응용 프로그램을 Linux 상에서 실행해야 합니다.가 IDE 문제인지 확인하려면 셸을 사용하여 앱을 실행합니다.

mvn spring-boot:run

에러 없이 기동하는 경우는, IDE문제가 있습니다.

이클립스

Eclipse IDE for Enterprise Java and Web Developers
Version: 2021-03 (4.19.0)
Build id: 20210312-0638

제 경우 스프링 부트프로젝트 내의 클래식한 Application.java오른쪽 클릭하여 프로젝트를 실행하다가 Java 어플리케이션으로 실행하였습니다.

몇 시간 동안 조사한 결과, 해결 방법은 다음과 같습니다.

루트 스프링 부트프로젝트오른쪽 클릭하여 Java 어플리케이션으로 실행합니다.이클립스는 주요 방법을 가진 몇 가지 클래스를 보여 줍니다.Application.java를 선택하고 실행한다.

긴 설명

정확한 메서드 오류를 확인하는 경우 DataSourceProperties.determinateDriverClassName은 driverClassName 또는 dirver-class-name과 URL만 필요합니다.

boot version의 " " " " "2.X.X아래 구성이 효과가 있었습니다.

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 드라이버는 사용되지 않습니다.새로운 것은, 상기의 설정에 기재되어 있습니다.같은 방법으로 프로젝트를 다시 시작하십시오.

jpa 종속성과 플러그인이 있기 때문일 수 있습니다.

사용하지 않을 경우 코멘트(build.gradle 또는 pom 파일)

예.

// kotlin("plugin.jpa") version "1.3.61"

// implementation("org.springframework.boot:spring-boot-starter-data-jpa")

옵션: 모든 최종 답변을 이미 테스트한 경우 솔루션

제목과 같은 오류가 있는 경우

검증된 .properties 연결 문자열이 올바릅니다.

그런 다음 maven 플러그인에 대한 이 코드 블록을 .pom 파일에 추가합니다.

        ...
    </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-resources-plugin</artifactId>
               <version>3.1.0</version>
        </plugin>

...

프로젝트 갱신.효과가 있어!!!

이게 도움이 됐으면 좋겠어요.

이 링크 페이지에서 찾을 수 있는 단계를 수행합니다.

goal org.apache.maven을 실행하지 못했습니다.플러그인: maven-displicate-displicate: 3.2.0: 개요

https://exerror.com/failed-to-execute-goal-org-apache-maven-pluginsmaven-resources-plugin3-2-0resources/

여기서: Maven 클린 설치: goal org.apache.maven을 실행하지 못했습니다.플러그인: maven-displicate-displicate: 3.2.0: 개요

이 문제는 @valerio-vaudi가 말했기 때문에 발생합니다.

문제는 spring-boot-starter-jdbc transitive maven 의존관계가 있는 스프링 배치 spring-batch의 의존성에 있습니다.

단, 고객님의 구성에 따라 프라이머리 데이터 소스를 설정할 수 있습니다.

 @Primary
 @Bean(name = "dataSource")
 @ConfigurationProperties(prefix = "spring.datasource")
 public DataSource getDataSource() {
      return DataSourceBuilder.create().build();
 }

 @Bean
 public JdbcTemplate jdbcTemplate(DataSource dataSource) {
      return new JdbcTemplate(dataSource);
 }

Gradle을 사용하는 경우 Rebuild Gradle을 사용하면 이 문제를 해결할 수 있습니다.

기본 Java 파일에 주석 추가

@EnableAutoConfiguration(exclude=DataSourceAutoConfiguration.class)

그래서 저도 비슷한 문제가 있어서 이 링크는 도움이 됩니다.

프로젝트 프리셋에는 'RDBMS 데이터베이스'와 'In Memory Database'가 필요합니다.

RDBMS 데이터베이스

  • mysql
  • 포스트그레스
  • 오라클
  • SQL 서버

메모리 데이터베이스 내

  • H2 데이터베이스
  • HSQL 데이터베이스
  • 더비 데이터베이스

그래서 제가 이 프리셋을 선택했을 때 모든 것이 잘 작동했습니다여기에 이미지 설명 입력.

데이터 소스가 정의되어 있는 경우application.resources아래쪽에 있는지 확인합니다.src/main빌드 경로에 추가합니다.

pom.xml에 JPA 의존관계가 있는 경우 삭제합니다.이 솔루션은 나에게 효과가 있었다.

리소스 폴더는 메이븐 업데이트/빌드에서 제외되었습니다.[ Build Path ]> [ Source ]으로 이동했더니 src / main / resources가 "Excluded **"로 되어 있습니다.해당 엔트리를 삭제했습니다([제외 **]> [삭제]> [적용 후 닫기]를 클릭).

그리고 잘 작동했다.

여기에 이미지 설명 입력

설정에 YAML 을 사용하고 있는 경우는, 들여쓰기 문제일 가능성이 있습니다.YAML 파일을 철저히 확인합니다.

이는 단순히 데이터베이스를 구성하지 않고 데이터베이스에 종속된 스프링 스타터 코드를 다운로드한 것을 의미하기 때문에 연결 방법을 인식하지 못합니다.스프링 부트 버전용2.18수정하려면 다음 단계를 수행합니다.

  1. 다운로드한 드라이버의 데이터베이스를 작성합니다.mysql/mongo기타.

  2. 고객님의 고객명applications.propertiesfile db 연결 정보를 추가합니다.샘플은 다음과 같습니다.mysqldb가 다음과 같은 경우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
  1. 동작하는 서버를 재기동합니다.

Inside pom.xml file always keep the updated spring framework version.저는 스프링 프레임워크 버전 2.5.5로 프로젝트를 만들었는데 그때는 잘 되고 있었습니다.몇 달 후, 올바르게 동작하지 않는 것을 알았습니다.그리고 스프링 프레임워크의 최신 버전을 넣습니다.그럼 효과가 있군요.

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

또한 스프링 프로파일을 확인합니다. 기본적으로는 '기본' 프로파일로 설정됩니다. 응용 프로그램 속성에 test, prod 등과 같은 다른 프로파일이 있는 경우 이를 설정해야 합니다. 이클립스 세트 환경 변수에 대해서는 name=spring.default, value=test로 설정합니다.

저는 같은 문제를 안고 위의 모든 제안을 시도했지만 잘 되지 않았습니다.독자들을 위해 답글을 올립니다.전에는 잘 작동했지만 어찌된 일인지 다시 나타났다.pom.xml에서 불필요한 플러그인과 디펜시스를 삭제하여 이 문제를 해결했습니다.

  1. 우선 기본 포장 타입을 jar로 변경했습니다(Spring Boot Initializer는 포장에 pom을 제공합니다).

    <packaging>jar</packaging>

  2. 의도하지 않게 몇 가지 플러그인을 추가했습니다.

    <plugin> <artifactId>maven-war-plugin</artifactId> <configuration> <attachClasses>true</attachClasses> <webXml>target/web.xml</webXml> <webResources> <resource> <directory>src/main/webapp</directory> <filtering>true</filtering> </resource> </webResources> </configuration> </plugin>

제 답변이 누군가에게 도움이 되었으면 좋겠어요.

MySQL의 경우 (어플리케이션 속성)이 기능을 했습니다.

spring.datasource.url=jdbc:mysql://localhost:3306/db?useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&
useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=admin
spring.jpa.hibernate.ddl-auto=create
spring.jpa.show-sql=true

저는 pom.xml에서 mybatis에 대한 오래된 의존관계를 제거했습니다.

언급URL : https://stackoverflow.com/questions/51221777/failed-to-configure-a-datasource-url-attribute-is-not-specified-and-no-embedd

반응형