2016-06-03 3 views
1

Я смущен ошибками, которые возникают при попытке создать в памяти H2 DB для моего приложения Spring Boot. Соответствующая конфигурацияНужно ли создавать таблицу, которую я хочу предварительно заполнить с помощью 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;

Weird, если я удалить CREATE TABLE заявление, я получаю:

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

Единственное, что работает, это использовать DROP TABLE IF EXISTS, но я не думаю, что мне нужно.

Что происходит? Каков правильный способ предварительного заполнения статических данных в БД памяти H2?

ответ

1

1) Hibernate способ: использовать 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 файлы или указать файлы сквозные свойства

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

 Смежные вопросы

  • Нет связанных вопросов^_^