오류 해결

[Spring Boot / 오류] data.sql Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource

cob 2023. 9. 24. 15:55
Spring Boot에서 data.sql 파일을 사용하여 데이터베이스 스키마를 초기화하려고 할 때 발생하는 오류 중 하나로 여러 가지 원인으로 발생할 수 있다.

 

 


1. SQL Script DataSource Initialization의 동작 방식 변경

스프링 부트 2.5.x 버전에서 SQL Script DataSource Initialization의 동작 방식이 변경되어 이전 버전에서는 Hibernate가 초기화된 후에 'data.sql' 스크립트가 실행되었지만, 해당 버전부터는 data.sql 스크립트가 Hibernate 초기화되기 전에 실행되도록 기본 설정된다. 따라서 Hibernate 초기화 후에  'data.sql'스크립트를 실행되게 해야 한다.

 

// application.yml 설정 파일
spring:
  jpa:
    defer-datasource-initialization: true​
  • 해당 설정은 Spring Boot에서 데이터소스 초기화를 지연시키는 설정이다. data.sql 스크립트를 지연시켜 Hibernate 초기화가 먼저 실행되도록 한다.

 

 


2. 데이터베이스 연결 설정

데이터베이스 연결 구성 (DataSource)에 문제가 있는 경우에 발생할 수 있다. 데이터베이스 URL, 사용자 이름 및 암호 등의 연결 설정을 다시 한번 확인한다.

 

3. 데이터베이스 드라이버 누락

필요한 데이터베이스 드라이버 의존성이 프로젝트에 누락된 경우에 발생한다. 데이터베이스 드라이버를 프로젝트의 의존성으로 추가하고 다시 시도한다.

 

4. SQL 문법 오류

data.sql 파일에 SQL 문법 오류가 있는 경우에 발생할 수 있다. SQL 문법을 다시 확인하고 오류를 수정한다.

 

5. 다수의 데이터베이스 초기화 스크립트

Spring Boot는 data.sql 외에도 schema.sql 및 data-${platform}.sql과 같은 다른 초기화 스크립트를 자동으로 실행할 수 있다. 스키마 생성 또는 데이터 적재 스크립트가 중복되어 있지 않는지 확인한다.

 

6. 다수의 DataSource 설정

프로젝트에 다수의 DataSource 설정이 있는 경우에 이러한 설정 간의 충돌이 발생할 수 있다. DataSource 설정을 확인하고, 중복 설정을 제거한다.

 

7. 스키마 생성 순서

데이터베이스 스키마 생성이 다른 스키마를 참조하는 경우, 스키마 생성 순서에 주의해야 한다. 스키마를 참조하는 스키마가 먼저 생성되어 있는지 확인한다.

 

8. 의존성 버전 충돌

Spring Boot와 관련된 의존성 버전이 충돌하는 경우에도 오류가 발생할 수 있다. 프로젝트의 의존성 관리를 체크하고, 충돌하는 의존성을 해결한다.

반응형