초기에 권한 설정 때문에 서버가 시작할 때 마다 실행할 쿼리문을 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 으로 설정했는지 한번 더 확인해 보자