작성
·
6K
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
9
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
하하.. 저도 작동이 계속 안 됐는데, data.sql 파일의 insert 마지막에 ';' (세미콜론)을 안 붙였었네요ㅋㅋ..
yml파일은 동영상 밑 안내글처럼 복붙 하고, data.sql 파일명 그대로 하고, ';' 잘 붙이니 잘 작동합니다. 스프링부트 2.5.7 버전입니다.
0
0
application.yml 만 있을 때는 서버도 잘 작동이 되고, 비어있는 catalog 테이블이 만들어지는 것을 확인 하였습니다.
하지만 data.sql 파일을 만들고 서버를 작동 시켰을 때, data.sql의 insert 하는 부분에서 tabla not found 에러가 뜹니다.