[SpringBoot] H2 insert sql script 오류

정명진·2023년 9월 18일
0

DB에 샘플데이터를 미리 넣고 시작하려고 data.sql을 작성하였다.

insert into catalog(product_id, product_name, stock, unit_price) values ('CATALOG-0001', 'pizza', 100, 15000);
insert into catalog(product_id, product_name, stock, unit_price) values ('CATALOG-0002', 'chicken', 200, 18000);
insert into catalog(product_id, product_name, stock, unit_price) values ('CATALOG-0003', 'noodle', 1000, 8000);

그리고 프로젝트를 재시작하니 다음과 같은 오류가 발생했다.

Error creating bean with name 'dataSourceScriptDatabaseInitializer' ... Table not found

테이블을 찾을 수 없어 insert가 불가능하다고 나온다.

해당 원인은 테이블명이 예약어라 못만들었는데 insert 하려해서 발생하거나, 테이블 생성 전인데 데이터를 insert 하려고 해서이다. 나의 경우는 테이블명이 예약어가 아니었기에 insert 순서보다 테이블을 먼저 생성하게끔 하는 옵션 "defer-datasource-initialization: true" 을 setting 파일에 넣어줬다.

spring:	
  jpa:
    defer-datasource-initialization: true
    hibernate:
      	ddl-auto: create-drop
    show-sql: true
    generate-ddl: true
  datasource:
    url: jdbc:h2:mem:testdb
    username: sa
    password:
    driver-class-name: org.h2.Driver

그랬더니 문제를 해결할 수 있었다.

profile
개발자로 입사했지만 정체성을 잃어가는중... 다시 준비 시작이다..

0개의 댓글