为什么我的嵌入式h2程序写入.mv.db文件

时间:2014-05-22 12:11:35

标签: java database jdbc h2

我按照h2数据库网站上的快速入门指南创建了一个新的数据库表并插入了一些数据。应用程序运行顺畅,可以毫无问题地读写数据库。

  

快速入门h2

     
      
  • 将h2 * .jar添加到类路径(H2没有任何依赖项)
  •   
  • 使用JDBC驱动程序类:org.h2.Driver
  •   
  • 数据库URL jdbc:h2:〜/ test在您的用户主目录中打开数据库测试
  •   
  • 自动创建新数据库
  •   

现在我想用web-frontend h2控制台查看数据,但每当我尝试打开我的数据库时,它只会创建一个新的数据库。

经过长时间的搜索后,我注意到我的Java-App使用了h2嵌入式版本,写入了一个名为" .mv.db"而web-frontend创建文件" .h2.db" (这对我来说更有意义)

此外,当我的应用程序写入数据库时​​,它使用极大的空间(大约600个整数值为80MB) 我怎样才能使用" .h2.db"我的嵌入式数据库的扩展名?

2 个答案:

答案 0 :(得分:46)

自版本1.4.177 Beta(2014-04-12)以来,现已自动启用。

您可以通过将;MV_STORE=FALSE;MVCC=FALSE添加到数据库网址

来禁用它
  

默认情况下,MV_STORE选项已启用,因此它正在使用new   MVStore存储。默认情况下,MVCC设置设置为相同的值   作为MV_STORE设置,默认情况下也会启用它。对于   测试,可以通过附加“; MV_STORE = FALSE”来禁用这两个设置   和/或“; MVCC = FALSE”到数据库URL。

     

http://www.h2database.com/html/changelog.html

您应该告诉我们您使用H2的确切版本。

答案 1 :(得分:11)

.mv.db - 文件适用于H2的即将推出的/ beta存储类型“MVStore”。

以下是http://www.h2database.com/html/changelog.html

  

内部的新表引擎“org.h2.mvstore.db.MVTableEngine”   使用MVStore来保存数据。试一试,追加   “; DEFAULT_TABLE_ENGINE = org.h2.mvstore.db.MVTableEngine”到   数据库URL。这仍然是非常实验性的,并且有许多功能   还不支持。数据存储在带后缀的文件中   的 .mv.db