본문 바로가기
Java

[트러블 슈팅] data.sql 작동 안되는 오류 해결 (더미 데이터 추가 안되는 오류 해결)

by yapdol 2023. 11. 25.

 

[트러블 슈팅] data.sql 작동 안되는 오류 해결 

(더미 데이터 추가 안되는 오류 해결) 

 

 


 

 

 

✅ 문제 상황

 

실제로 article 테이블에 데이터가 추가되는 지 확인하기위해, resources 디렉토리 하위에 위치한 data.sql에 3개의 더미데이터를 추가하는 쿼리문을  파일에 작성하였으나, 아래와 같이 테이블만 생성되고 데이터는 추가되지않은 문제가 발생했다.

 

더미데이터가 3개 추가 되어야하지만 추가되지 않음.

 

문제를 해결하기위해, "data.sql not working", "data.sql 작동 오류" 등의 키워드로 구글에 검색을 했고, 원인과 해결책을 찾아 여러번의 시도 끝에 오류를 성공적으로 해결할 수 있었다.

 

 

 

 

 

 

 

✅ 문제 해결 과정, 원인, 해결책

 

📌 1st 트러블 슈팅

구글링을 통해 찾은 문제의 원인과 해결책은 이러했다.

Hibernate and data.sql
By default, data.sql scripts are now run before Hibernate is initialized. This aligns the behavior of basic script-based initialization with that of Flyway and Liquibase. If you want to use data.sql to populate a schema created by Hibernate, set spring.jpa.defer-datasource-initialization to true. While mixing database initialization technologies is not recommended, this will also allow you to use a schema.sql script to build upon a Hibernate-created schema before it’s populated via data.sql.

 

기본적으로 Hibernate 가 초기화하기전에 data.sql은 동작하지 않으므로,

Hibernate를 통해 생성된 스키마에 데이터를 넣고싶다면 spring.jpa.defer-datasource-initializationd true 로 설정(권장되는 방법)해라. 라는 문제의 원인과 해결책을 찾을 수 있었고, 이를 적용해 다시 실행해보았으나, 결과는 똑같았고 여전히 데이터가 제대로 추가되지 않은 것을 확인했다.

 

(두번째 방법으로 schema.sql 을 추가해 Hibernate 가 스키마를 생성하기 전에 실행되도록해, 생성된 스키마에 data.sql 의 데이터를 생성하게 하는 방법도 있었지만, 권장되지 않는 방법이므로 시도하지않았다.)

spring.jpa.defer-datasource-initializationd: true 설정 추가

 

여전히 데이터가 추가되지 않음

 

 

📌2nd 트러블 슈팅 ( 문제 해결! )

  문제 원인

위의 방법으로 에러가 해결되지 않아서, 이번에는 직접 Spring Boot 2.7.0 Configuration Changelog 에 들어가 문서를 검토했고, 그 결과  Spring boot 2.7.0  이상에서는 Spring.datasource.initialzation-mode 가 spring.sql.init.mode로 대체된 것을 확인할 수 있었다....

 

 

 

  문제 해결

따라서, application.yml 에서 spring.sql.init.mode 를 추가해 다시 실행했더니 이번엔 성공적으로 데이터가 추가된것을 확인할 수 있었다.

( defer-datasource-initialization: true 설정을 제거했더니 데이터 추가가 안되서,  spring.sql.init.mode과 defer-datasource-initialization 모두 설정함)

 

더미데이터 추가 성공!!

 

 

 

 

 

 

 

 

 

참고문헌 : 

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.7.0-Configuration-Changelog

 

Spring Boot 2.7.0 Configuration Changelog

Spring Boot. Contribute to spring-projects/spring-boot development by creating an account on GitHub.

github.com