programing

Spring Boot Data JPA with H2 and data.sql - 테이블을 찾을 수 없음

iphone6s 2023. 3. 23. 22:23
반응형

Spring Boot Data JPA with H2 and data.sql - 테이블을 찾을 수 없음

Spring Boot 2.5.0 프로젝트가 있습니다.spring-data-jap을 h2 인메모리 데이터베이스와 함께 사용하고 있습니다.시작 시 데이터를 data.sql 파일로 채우고 싶은데 테이블을 찾을 수 없음 예외가 나타납니다.data.sql 파일을 삭제하면 엔티티 테이블이 자동으로 작성되는 것을 알 수 있습니다.그러나 data.sql 파일을 포함하면 테이블이 존재하지 않는다는 오류가 나타납니다.h2 데이터베이스를 잘못 설정했다는 SQL 구문의 오류일 수 있습니다.

application.yml

spring:
  datasource:
    url: jdbc:h2:mem:test
    driverClassName: org.h2.Driver
    username: sa
    password: sa
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect

debug: true  

data.sql

INSERT INTO BUSINESS_SUMMARY VALUES (1, "ALM470", "B48", 3);

BusinessSummary.java 엔티티

@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
@Entity
public class BusinessSummary {

    @Id
    private Long id;
    private String businessId;
    private String businessDomainId;
    private Integer cityCode;
}

Business Summary Repository.java

@Repository
public interface BusinessSummaryRepository extends JpaRepository<BusinessSummary, Long> {
}

예외:

Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "BUSINESS_SUMMARY" not found; SQL statement:
INSERT INTO BUSINESS_SUMMARY VALUES(1, "ALM470", "B48", 3) [42102-200]
spring.jpa.defer-datasource-initialization=true

기본적으로는 데이터입니다.이제 hibernate가 초기화되기 전에 sql 스크립트가 실행됩니다.이를 통해 기본 스크립트 기반 초기화 동작이 Flyway 및 Liquibase와 일치합니다.

데이터를 사용하고 싶다면.sql을 사용하여 휴지 상태로 작성된 스키마를 채우려면 spring.jpa.defer-datasource-initialization을 true로 설정합니다.데이터베이스 초기화 기술을 혼용하는 것은 권장되지 않지만 스키마를 사용할 수도 있습니다.data.sql을 통해 입력되기 전에 Hibernate에서 생성된 스키마를 기반으로 하는 sql 스크립트.

변환해야 합니다.spring.jpa.defer-datasource-initializationyml로 이동합니다.

휴지 상태를 JPA 구현으로 사용하는 경우 데이터베이스 초기화에 data.sql 대신 import.sql 파일을 사용하는 것이 가장 좋다고 생각합니다.

데이터베이스 초기화에 대한 자세한 내용은 Spring Boot 공식 매뉴얼 Database Initialization을 참조하십시오.

delay-sources-initialization: true, 필요한 경우도 있습니다.

spring:
  sql:
    init:
      mode: always
spring.jpa.defer-datasource-initialization = true    
spring.sql.init.mode = always

그래도 작동하지 않으면 파일에서 파일 이름을 변경해 보십시오.sql을 Import합니다.sql

언급URL : https://stackoverflow.com/questions/67744719/spring-boot-data-jpa-with-h2-and-data-sql-table-not-found

반응형