应用程序重启后H2数据库无法查找信息

时间:2014-07-28 18:59:54

标签: spring hibernate h2 create-table

我使用此application.properties文件

创建了一个spring应用程序
spring.datasource.schema=schema-h2.sql
spring.datasource.url=jdbc:h2:file:JMeterMaid
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

 #Hibernate Configuration:  
hibernate.dialect=org.hibernate.dialect.H2Dialect 
hibernate.show_sql=true  
hibernate.hbm2ddl.auto=update

entitymanager.packages.to.scan=com.spr.model  

和这个schema-h2.sql文件

CREATE TABLE IF NOT EXISTS RunEntity (ID INTEGER IDENTITY,TestNumber INTEGER NOT NULL, TestName varchar(50) NOT NULL, ENVIRONMENT VARCHAR(50) NOT NULL, Source VARCHAR(50), Date TIMESTAMP, RESULTFILES BLOB);

我认为CREATE TABLE IF NOT EXISTS这一行会使程序在应用程序停止运行并重新启动后能够从数据库中查找信息。但是,一旦应用程序再次运行,就无法找到任何信息。如何在多次运行应用程序期间保存信息并访问它?

1 个答案:

答案 0 :(得分:0)

您在数据库网址中使用了相对路径:

  • jdbc:h2:file:JMeterMaid(相对于当前工作目录)

在将来的H2版本中将不再支持此功能。这意味着,数据库文件存储在当前工作目录中。当您在另一个目录中启动程序时,会在那里创建一个新数据库。

要解决此问题,请使用绝对路径或相对于当前用户主目录的路径,例如:

  • jdbc:h2:file:/data/JMeterMaid(绝对路径)
  • jdbc:h2:file:~/data/JMeterMaid(相对于当前用户主目录)