• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

h2 DB 자동 생성에 관해서

21.06.03 12:50 작성 조회수 5.57k

1

강의대로 application.yml 에 DB 테이블 자동 생성 까지는 잘 작동을 하는데, data.sql 을 만들고 insert문에서 자꾸 에러가 뜨네요 ㅠ 원인이 뭘까요..

에러코드 입니다.

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Invocation of init method failed; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #1 of URL [file:/D:/Documents/spring_project/ecommerce/microservice/catalog-service/build/resources/main/data.sql]: insert into catalog (product_id, product_name, stock, unit_price) values ('CATALOG-001', 'Berlin', 100, 1500); nested exception is org.h2.jdbc.JdbcSQLException: Table "CATALOG" not found; SQL statement: insert into catalog (product_id, product_name, stock, unit_price) values ('CATALOG-001', 'Berlin', 100, 1500) [42102-176]

답변 6

·

답변을 작성해보세요.

10

안녕하세요, 이도원입니다. 

Spring Boot 2.5 부터 data.sql의 사용법이 조금 변경되었습니다. 다음과 같은 설정을 적용하셔서 실행해 보셔도 좋을 것 같습니다. 

spring.jpa.defer-datasource-initialization=true

https://springhow.com/spring-boot-version/

8

Gal2o님의 프로필

Gal2o

질문자

2021.06.03

spring 2.5.0 버전을 사용하고 있었는데 data.sql 이라는 파일명이 에러를 계속 발생시켰습니다..

import.sql로 변경했더니 정상 작동 하였습니다.

3

안녕하세요, 이도원입니다. 

application.yml 파일에 아래와 같은 정보를 추가하시고, 애플리케이션을 다시 기동해 보시기 바랍니다. 

spring:
application:
name: catalog-service
h2:
console:
enabled: true
settings:
web-allow-others: true
path: /h2-console
jpa:
hibernate:
ddl-auto: create-drop
show-sql: true
generate-ddl: true
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:testdb

감사합니다. 

0

제이티시님의 프로필

제이티시

2021.12.16

하하.. 저도 작동이 계속 안 됐는데, data.sql 파일의 insert 마지막에 ';' (세미콜론)을 안 붙였었네요ㅋㅋ..

yml파일은 동영상 밑 안내글처럼 복붙 하고, data.sql 파일명 그대로 하고, ';' 잘 붙이니 잘 작동합니다. 스프링부트 2.5.7 버전입니다.

0

먼길님의 프로필

먼길

2021.06.29

이것 때문에 한참 고생했는데 (다음 편 강좌에는 글이 없어서....) yml 설정 다시 해주고 살았습니다. data.sql 파일명 in 스프링부트 2.5.2 버전입니다.

0

Gal2o님의 프로필

Gal2o

질문자

2021.06.03

application.yml 만 있을 때는 서버도 잘 작동이 되고, 비어있는 catalog 테이블이 만들어지는 것을 확인 하였습니다.

하지만 data.sql 파일을 만들고 서버를 작동 시켰을 때, data.sql의 insert 하는 부분에서 tabla not found 에러가 뜹니다.