-
Notifications
You must be signed in to change notification settings - Fork 1
DB 초기화 설정하기
kimhanui edited this page Nov 13, 2020
·
1 revision
예제참고 링크: https://walkingtechie.blogspot.com/2018/12/execute-schema-and-data-sql-on-startup-spring-boot.html
ddl-auto - schema 생성관여
initialization-mode - schema, data 생성관여
spring.jpa.generate-ddl=false //그냥 t or f
spring.jpa.hibernate.ddl-auto=none
spring.datasource.initialization-mode=always
- ddl-auto : 위에서 참일때 스키마 자동 생성 옵션을 선택해준다. 사실 위에서 false로 설정해도 여기서 "none이외의" 값을 선택하면 자동생성되는 것 같다.
- initialization-mode: 외부DB를 사용할땐 반드시 always로 설정해야 초기화 가능하다.stackoverflow 질문
이렇게 설정해야 같이 초기화된다.
spring.jpa.hibernate.ddl-auto=create
spring.datasource.initialization-mode=always
위와 같이 설정하면 충돌난다. 스키마 자동생성 전략에 대한 충돌이다.
해결은 아래와 같이 하면 된다.
spring.jpa.hibernate.ddl-auto=none
spring.datasource.initialization-mode=always
#또는
spring.jpa.hibernate.ddl-auto=create
spring.datasource.initialization-mode=never
spring.datasource.data = classpath:data-maria.sql
platform 옵션을 이용해서 각 db마다 data,schema를 다르게 초기화해줄 수 있다.
#MARIADB
spring.datasource.platform=maria
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=${JAWSDB_MARIA_URL}
spring.datasource.username=${JAWSDB_MARIA_USERNAME}
spring.datasource.password=${JAWSDB_MARIA_PASSWORD}
spring.datasource.sql-script-encoding=UTF-8
MariaDB에 사용할 스크립트는 data-{name}.sql, schema-{name}.sql로 네이밍해서 위와같이 적용하면 된다.
여기선 data-maria.sql을 이용했다.