카테고리 없음
h2 스크립트 오류 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource
kangchaewon
2025. 6. 1. 23:54
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource 오류가 생겼다.
원인
schema.sql. data.sql을 작성했는데, 이와 같은 초기화 스크립트가 있더라도 애플리케이션에서 직접 테이블을 만들거나 jpa에서 처리하는 상황이 있을 수 있다. 이때, 초기화 스크립트가 실행되면 오류가 생긴다. 결론은 schema.sql이 jpa로 이미 만들어진 테이블을 덮어쓰려고 시도하며 원치 않은 초기화가 일어나며 오류가 생긴다
해결
spring:
sql:
init:
mode: never
위 코드를 application.yml 파일에 추가한다
schema.sql이나 data.sql을 자동 실행하지 않고,
JPA의 DDL이나 실제 DB 설계만 사용하고, 자동 스크립트 실행을 비활성화하는 설정이다
최종코드
spring:
datasource:
url: jdbc:h2:mem:mydb;MODE=MYSQL;DB_CLOSE_DELAY=-1
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: none
show-sql: true
database-platform: org.hibernate.dialect.H2Dialect
sql:
init:
mode: never
h2:
console:
enabled: true
path: /h2-console