我使用Spring Boot将H2数据库用于测试应用程序。每当我重新启动spring boot应用程序时,H2中的数据都会被清除。我正在使用文件而不是内存。我也在application.properties中设置了spring.jpa.hibernate.ddl-auto=update
。
这是我的application.properties文件
spring.datasource.url=jdbc:h2:file:./data/demo
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
spring.jpa.hibernate.ddl-auto=update
我在这里做错了什么。它可以节省数据。但是一旦我关闭了该应用程序,所有数据都会被清除。
答案 0 :(得分:0)
默认情况下,关闭与数据库的最后一个连接会关闭数据库。对于内存数据库,这意味着内容丢失。要保持数据库打开状态,请在数据库URL中添加; DB_CLOSE_DELAY=-1
。要在虚拟机处于活动状态时保持内存数据库的内容,请使用jdbc:h2:mem:test;DB_CLOSE_DELAY=-1.
; DB_CLOSE_ON_EXIT=FALSE;
答案 1 :(得分:0)
我发现我正在做的错误。我的资源中有data.sql文件,每次Spring boot启动该应用程序时,它将运行此脚本。在该脚本中,我删除并重新创建了所有表。一旦删除了这些sql语句,它就会完美运行。数据将永久保存在文件中,并且在服务器重新启动后不会删除。