Framework/SpringBoot

[SpringBoot] 스프링 부트 data.sql이 실행되지 않을 때 (data.sql not working)

  • -

문제 상황

main/resources/data.sql 에 insert 쿼리를 작성하였는데, api를 테스트해보니 data.sql에 있는 쿼리가 적용되지 않았습니다.

 

data.sql

INSERT INTO users (name, id, password, ...) VALUES (...);
INSERT INTO users (name, id, password, ...) VALUES (...);
-- 이하 생략 --

 

application.properties

spring.jpa.defer-datasource-initialization=true
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/데이터베이스
spring.datasource.username=root
spring.datasource.password=데이터베이스비밀번호
spring.jpa.hibernate.ddl-auto=create


해결 방법

application.properties에 아래 코드를 추가하니 data.sql이 정상 작동 하였습니다.

spring.sql.init.mode=always

 

properties파일이 아닌 yml 파일인 경우 다음 코드를 추가해주세요.

spring:
	jpa:
    	  defer-datasource-initialization: true

 

✨ 어떻게 해결된 것일까?

spring.sql.init.mode=always

 

위 코드는 Spring Boot 애플리케이션이 실행될 떄 항상 데이터에비스 초기화 스크립트를 실행하도록 지시하는 설정입니다. 이 설정의 속성을 always로 하여 애플리케이션을 시작할 때마다 data.sql의 내용으로 데이터베이스를 초기화합니다.

 

개발 환경이나 테스트 시에 데이터베이스를 초기화하는 데 유용할 수 있습니다만 프로덕션 환경에서는 초기화 스크립트를 막 실행하지 않도록 주의해야합니다. 😁

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.