[Spring Boot] data.sql 적용 안됨

10000JI·2024년 2월 17일
0

Spring Boot

목록 보기
13/15
post-thumbnail

문제 발생

초기에 권한 설정 때문에 서버가 시작할 때 마다 실행할 쿼리문을 data.sql에 작성하였다.

그러면 data.sql 쿼리들이 자동 실행된다.

하지만 정작 db에는 저장이 안 되는 것을 포착

동일 문제로 구글링 하지 말고 버전 이슈로 코드가 변경되기 전까지 참고하려고 적는다.

참고로 application.yml로 작성하였다.

해결 과정

주된 답변으로는 Spring Boot 2.5x 버전 부터는 spring.jpa.defer-datasource-initialization: true 가 필요하다는 것 이었다.

허나 data.sql 은 실행되지 않았고.. 이전 코드를 뒤적거리기 시작

그래서 발견한 것은

  sql:
    init:
      mode: always
  jpa:
    defer-datasource-initialization: true

이 두 가지 코드를 모두 작성해주어야 실행된다.

결론적으로 사용하는 application.yml은 다음과 같다.

#application.yml

spring:
  datasource:
    url: jdbc:mariadb://localhost:3306/
    driver-class-name: org.mariadb.jdbc.Driver
    username: 
    password: 

  sql:
    init:
      mode: always

  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        format_sql: true
        show_sql: true
        dialect: org.hibernate.dialect.MariaDBDialect
    defer-datasource-initialization: true

만약 이렇게 두개를 모두 추가하였는데도 인식이 되지 않는다면 spring.jpa.hibernate.ddl-auto를 create 나 create-drop 값으로 설정해 놓았는지 확인해보아야 한다.

hibernate를 이용해서 db를 생성하도록 만들어 놓아야 data.sql의 쿼리들이 실행 될 테이블이 존재할 수 있기 때문에 create, create-drop으로 설정을 해 놓아야 한다.

자기가 update, none, validate 으로 설정했는지 한번 더 확인해 보자

profile
Velog에 기록 중

0개의 댓글