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
'programing' 카테고리의 다른 글
| 스프링 부트 @Autowired with Kotlin in @Service는 항상 null입니다. (0) | 2023.03.23 |
|---|---|
| Oracle에서 두 열을 하나의 열로 비교하는 방법 (0) | 2023.03.23 |
| WooCommerce 커스텀 필드 - 다중 선택 (0) | 2023.03.23 |
| json gem 설치 중 오류 발생 'mkmf.rb가 루비의 헤더 파일을 찾을 수 없습니다' (0) | 2023.03.23 |
| woocommerce 관리 주문 페이지 편집 방법 (0) | 2023.03.23 |