2016-06-03 1 views
1

스프링 부트 애플리케이션 용 메모리 H2 DB를 만들 때 발생하는 오류로 혼란 스럽습니다. 관련 구성H2와 함께 채울 테이블을 생성 할 필요가 없습니까?

db.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;INIT=runscript from 'classpath:create.sql' 
hibernate.hbm2ddl.auto=create 

그리고 create.sql입니다 :

CREATE TABLE `cities` (
    `name` varchar(45) NOT NULL, 
    PRIMARY KEY (`name`) 
) ; 

INSERT INTO `cities` VALUES ('JAEN'),('ALBACETE'); 

하지만 오류를 얻을 Caused by: org.h2.jdbc.JdbcSQLException: Table "CITIES" already exists;

이상한 내가 CREATE TABLE 문을 제거하면, 내가 얻을 수 있습니다 :

Caused by: org.h2.jdbc.JdbcSQLException: Table "CITIES" not found; 

작동하는 유일한 방법은 DROP TABLE IF EXISTS,하지만 글쎄, 나는 내가해야한다고 생각하지 않는다.

무슨 일 이니? 정적 데이터를 H2 메모리 DB에 미리 채우는 올바른 방법은 무엇입니까?

답변

1

1) 최대 절전 방법 : import.sql 파일을 사용하거나 지정 파일

spring.jpa.properties.hibernate.hbm2ddl.import_files=file1.sql,file2.sql

http://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html

2) 봄 부팅 : 사용 기본 schema.sql & data.sql 파일 또는 지정 파일 스루 (through) 속성

spring.datasource.schema = file1.sql spring.datasource.data = file1.sql, file2.sql

http://docs.spring.io/autorepo/docs/spring-boot/1.0.2.RELEASE/reference/html/howto-database-initialization.html

관련 문제