스프링 부츠 플라이웨이예외:데이터베이스에 연결할 수 없습니다.URL, 사용자 및 암호 구성
실행할 때maven flyway:migrate
나는 오류를 이해합니다.
프로젝트 myProject: org.flywaydb.core.api에서 목표 org.flywaydb:flyway-maven-plugin:6.5.5:migrate(default-cli)를 실행하지 못했습니다.Flyway 예외:데이터베이스에 연결할 수 없습니다.URL, 사용자 및 암호를 구성합니다!
application.yml 파일에 Spring Boot 설정이 있지만 오류가 발생하면 데이터베이스 구성이 감지되지 않는 것 같습니다.이 문서에는 "Spring Boot은 데이터 소스와 함께 Flyway를 자동으로 연결하고 시작할 때 호출합니다."라고 나와 있습니다.flyway plugin 섹션의 pom.xml에 구성을 추가하면 데이터베이스에 연결되지만 application.yml 구성을 사용합니다.pom.xml이 아닙니다.그럼 내가 뭘 잘못하고 있는 거지?
문제가 있는 repo 링크: https://github.com/jack-cole/BrokenSpringBoot
application.yml
spring:
datasource:
driverClassName: org.postgresql.Driver
url: "jdbc:postgresql://localhost:5433/myDB"
username: postgres
password: test123
종속성:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jooq</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.16</version>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>7.0.0</version>
</dependency>
플러그인:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>6.5.5</version>
</plugin>
메이븐으로 실행:
프로젝트 myProject: org.flywaydb.core.api에서 목표 org.flywaydb:flyway-maven-plugin:6.5.5:migrate(default-cli)를 실행하지 못했습니다.Flyway 예외:데이터베이스에 연결할 수 없습니다.URL, 사용자 및 암호를 구성합니다!
flyway-maven-plugin 구성에서 url, 사용자 및 암호를 구성할 수 있습니다. 첫 번째 단계 메이븐 참조
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>7.0.0</version>
<configuration>
<url>jdbc:postgresql://localhost:5433/myDB</url>
<user>postgres</user>
<password>test123</password>
</configuration>
</plugin>
또는 환경 변수 포함:
mvn flyway:migrate -Dflyway.url=jdbc:postgresql://localhost:5433/myDB -Dflyway.user=postgres -Dflyway.password=test123
더 많은 접근법은 https://www.baeldung.com/database-migrations-with-flyway 에서 확인
스프링 부트로 실행:
프로젝트에 Flyway 코어 라이브러리를 포함할 때 응용 프로그램 시작 시 Spring Boot 자동 구성 및 Flyway 트리거.의 사용 보기
@ConditionalOnClass(Flyway.class)
플라이웨이에서자동 구성:@Configuration(proxyBeanMethods = false) @ConditionalOnClass(Flyway.class) @Conditional(FlywayDataSourceCondition.class) @ConditionalOnProperty(prefix = "spring.flyway", name = "enabled", matchIfMissing = true) @AutoConfigureAfter({ DataSourceAutoConfiguration.class, JdbcTemplateAutoConfiguration.class, HibernateJpaAutoConfiguration.class }) @Import({ FlywayEntityManagerFactoryDependsOnPostProcessor.class, FlywayJdbcOperationsDependsOnPostProcessor.class, FlywayNamedParameterJdbcOperationsDependencyConfiguration.class }) public class FlywayAutoConfiguration { ... }
사용하다mvn spring-boot:run
또는java -jar app.jar
응용 프로그램을 실행합니다.
NB: 마이그레이션 스크립트가 다음 위치에 있는지도 확인합니다.db/migration
그렇지 않으면 위치를 제공합니다.spring.flyway.locations
소유물
리소스:
https://flywaydb.org/documentation/configuration/parameters/
https://flywaydb.org/documentation/getstarted/firststeps/maven/
스프링 부트 문서의 일부를 인용했지만, 스프링 부트가 아닌 메이븐 작업으로 마이그레이션을 시작했습니다.
Flyway maven 플러그인은 스프링 부트 구성을 인식하지 않으며 다음 소스만 고려합니다.우선순위
- 시스템 속성
- 환경변수
- 사용자 정의 구성 파일
- 메이븐 특성
- 플러그인 구성 섹션
- settings.xml의 자격 증명
- /flyway.conf
- Flyway Maven 플러그인 기본값
PC에서 환경 변수 접근 방식을 사용했습니다. 빌드 플러그인과 스프링 부트에 대해 정의된 것과 동일한 환경 변수가 있습니다.
앱을 시작할 때 Flyway를 실행하려면(스프링 부트 포함), 다음을 제거합니다.flyway-maven-plugin
플러그인, 필요 없습니다.
편집
그나저나, 네가 뛰면,maven flyway:migrate
플러그인에 대한 자격 증명을 설정해야 합니다(Java 리소스에 액세스하지 않음).
- 이 => 에서 자격 . 따 서 이 작 실 하 거 에 날 증 을 자 에 야 해 정 명 다 합 니 설 격 짜 플 그 라
pom.xml
. - 플러그인이에 자격 증명을 하면 됩니다.
application.yaml
을 위한 입니다.
시도해 보셨습니까?
application.yml
spring:
flyway:
driverClassName: org.postgresql.Driver
url: "jdbc:postgresql://localhost:5433/myDB"
user: postgres
password: test123
enabled: true
구성에 몇 가지 누락된 부분이 있습니다.
- 스프링 부트를 위해 너무 많은 공간을 사용합니다.
.yml
에는 다음과 두 이 더 합니다모든 다음 수준에는 다음과 같은 두 개의 공백이 더 있어야 합니다.
spring:
datasource:
url: jdbc:postgresql://localhost/myDB
username: postgres
password: root
이제 그만.그렇지 않으면, 그것은 작동하지 않을 것입니다!
Idea를 한다면 자동 를 사용하여 IntelliJ Idea를 할 수 ..yml
: Ctrl + Alt + L.
또는 다음과 같은 스타일을 사용할 수 있습니다..properties
:
spring.datasource.url: ...
spring.datasource.username: ...
중복성이 높아집니다.그러나 오류를 범할 가능성은 줄어듭니다.
- Spring Boot을 사용하고 있습니다.따라서 버전을 직접 포함할 필요가 없습니다.
Spring의 의존성 관리에 훨씬 더 나은 것이 남겨질 것입니다.
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
그리고.
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
</plugin>
대부분의 경우 이러한 버전 조합이 잘 작동할 것이라고 확신할 수 있습니다.
- 당신은 당신의 마이그레이션 파일을 아래에 놓아야 합니다.
resources/db/migration
또한 이름을 짓는 것은 매우 중요합니다. 번째 은 다음과 같은.
V1__Init_Db.sql
으로 적으로다음정확두히개의밑표다시니됩줄이에기뒤본▁▁by▁after 뒤에 정확히 두 개의 밑줄이 있습니다.V1
->V1__
!
자세한 내용은 마이그레이션 정보를 참조하십시오.
- 또한 구성 파일에 다음과 같은 추가 값이 필요한지 확인합니다.
spring.jpa.show-sql: true
spring.jpa.hibernate.ddl-auto: create
언급URL : https://stackoverflow.com/questions/64191935/spring-boot-flywayexception-unable-to-connect-to-the-database-configure-the-ur
'programing' 카테고리의 다른 글
Chrome에서 Selenium WebDriver Python 바인딩 실행 (0) | 2023.07.17 |
---|---|
Oracle을 사용하여 Oracle에 연결합니다.관리되는 데이터 액세스 (0) | 2023.07.17 |
Excel VBA 매크로에서 UTC의 현재 날짜 시간을 가져오는 방법 (0) | 2023.07.17 |
numpy 배열을 통해 반복 (0) | 2023.07.17 |
두 하위 플롯이 생성된 후 x축을 공유하는 방법 (0) | 2023.07.17 |