You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot集成H2数据库重启丢失数据,求持久化解决方案

解决Spring Boot中H2数据库重启数据丢失问题

核心问题原因

你当前配置里的spring.datasource.url使用了mem:前缀,这是H2的内存数据库模式——数据仅存储在JVM内存中,应用重启后内存释放,数据自然丢失。

具体配置修改方案

只需要修改application.properties中的数据源URL,将内存模式改为文件持久化模式即可:

1. 修改数据源URL

把原来的配置:

spring.datasource.url=jdbc:h2:mem:ecommerce

替换为以下两种方式之一:

方式一:相对路径存储(数据保存在项目根目录下)

spring.datasource.url=jdbc:h2:file:./h2-data/ecommerce;DB_CLOSE_ON_EXIT=FALSE
  • ./h2-data/表示项目根目录下的h2-data文件夹(不存在会自动创建)
  • ecommerce是数据库名称,对应生成的文件为ecommerce.mv.db
  • DB_CLOSE_ON_EXIT=FALSE确保应用关闭时不会强制关闭数据库,避免数据写入异常

方式二:绝对路径存储(指定固定磁盘位置)

如果需要把数据存在固定路径,可根据操作系统调整:

# Linux/macOS示例
spring.datasource.url=jdbc:h2:file:/opt/h2-db/ecommerce;DB_CLOSE_ON_EXIT=FALSE

# Windows示例(路径用/或转义\\)
spring.datasource.url=jdbc:h2:file:D:/h2-db/ecommerce;DB_CLOSE_ON_EXIT=FALSE

2. 保留现有正确配置

你的其他配置已符合持久化要求,无需修改:

  • spring.jpa.hibernate.ddl-auto=update:仅更新表结构,不会删除已有数据或重建表
  • spring.h2.console.enabled=true:依然可以通过H2控制台访问数据库

验证方法

修改配置后重启应用,添加测试数据,再次重启应用后,打开H2控制台(默认地址http://localhost:8080/h2-console),使用修改后的URL连接数据库,即可查看之前保存的数据。

内容的提问来源于stack exchange,提问作者MTR807

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 06:16:01