카테고리 없음

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