将初始数据导入 Spring Boot 应用程序
Posted
技术标签:
【中文标题】将初始数据导入 Spring Boot 应用程序【英文标题】:import initial data into spring boot app 【发布时间】:2017-04-20 20:46:51 【问题描述】:根据文档 http://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html 要在启动时导入数据,您可以在 application.properties 中定义这两个属性:
spring.datasource.data=data.sql
spring.datasource.schema=schema.sql
当您拥有这两个文件但我没有架构时,此方法有效。我正在使用休眠生成数据库架构
spring.jpa.hibernate.ddl-auto=create-drop
以前的解决方法Importing Data with spring boot 是为 schema.sql 定义文件空白,但它不再起作用。我会得到文件不能是blank or null
的异常。
在 spring 应用程序中我只是简单地定义了
<jdbc:initialize-database data-source="simpleDataSource">
<jdbc:script location="classpath:dbscripts/data.sql"/>
</jdbc:initialize-database>
它成功了。
有没有办法在 springBoot 中也有相同的行为?
【问题讨论】:
嗨,这个问题有什么好运气吗?你解决了吗? @pmanolov 是的,只需删除application.properties
中的属性
【参考方案1】:
只需删除schema.sql
+ 配置选项,Spring Boot 应该会自动选择仅sata.sql
。
【讨论】:
【参考方案2】:根据spring源代码-data.sql
只有在schema.sql
文件存在且不为空的情况下才会被调用。因此,如果您只需要来自data.sql
的脚本,请向schema.sql
添加一些简单的查询,例如
SELECT 1;
也在application.properties
添加
spring.datasource.initialization-mode=always
因为默认值仅用于嵌入式数据源。
【讨论】:
以上是关于将初始数据导入 Spring Boot 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
将 Gradle.build 版本导入 Spring Boot