首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我是否需要创建一个要用H2预填充值的表?

我是否需要创建一个要用H2预填充值的表?
EN

Stack Overflow用户
提问于 2016-06-03 21:48:29
回答 1查看 683关注 0票数 1

当我试图为我的Spring Boot应用程序创建内存中的H2 DB时,我被我得到的错误弄糊涂了。相关配置为

代码语言:javascript
代码运行次数:0
运行
复制
db.url=jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1;INIT=runscript from 'classpath:create.sql'
hibernate.hbm2ddl.auto=create

create.sql

代码语言:javascript
代码运行次数:0
运行
复制
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语句,我会得到:

代码语言:javascript
代码运行次数:0
运行
复制
Caused by: org.h2.jdbc.JdbcSQLException: Table "CITIES" not found;

唯一有效的方法就是使用DROP TABLE IF EXISTS,但我认为我不需要这样做。

到底怎么回事?将静态数据预先填充到H2内存DB中的正确方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2016-06-04 07:46:20

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) Spring Boot:使用默认的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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37616147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档