java - 为什么每次启动 Spring Boot 应用程序时我的 h2 数据库都是空的?
问题描述
我在具有 spring-boot-starter-data-jpa 依赖项的 maven 项目中使用 spring boot。
在我的 application.yml 文件中,我有:
spring.datasource.url: jdbc:h2:./data;DB_CLOSE_ON_EXIT=FALSE
我还有一个 DataPopulation 类:
if (userRepository.findAll().iterator().hasNext()) {
// Database already has users..
}
其中 userRepository 是 CrudRepository 实例。
每次启动时,userRepository 都不返回任何用户,无论应用程序上次运行时添加了多少用户。
我可以看到 data.mv.db 和 data.trace.db 文件已创建且不为空。
为什么我的数据库在启动时总是空的?我错过了什么?
解决方案
该./data
路径让我认为每次构建应用程序时数据库都会被删除,这.
意味着当前目录。因此,您可以使用与您的用户主文件夹相关的数据库文件,由~
:指示~/data
。您可能还想:file
在 JDBC URL 中使用:
spring.datasource.url: jdbc:h2:file:~/data;DB_CLOSE_ON_EXIT=FALSE
如果需要,请查看 H2功能文档。
推荐阅读
- c# - 在 Dynamics 365 Customer Engagement 中检索审计数据的性能问题
- javascript - Sequelize:inputValue 不能是数组或对象
- excel - VBA:将日期更新为 yyyymmdd 提出哈希
- javascript - 嵌套循环输出的时序
- javascript - javascript / react - 在反应状态下切换数组中两个对象的属性而不触发重新渲染
- c# - 如何修复:Arraylist 的 System.Runtime.Serialization.InvalidDataContractException
- shell - 如何在crontab中传递日期参数
- scala - 如何从日期字符串中提取年份?
- ruby-on-rails - Rails 5.2 用于数组不包含的控制器
- python-3.x - matplotlib 版本 >=3 不包括 find()