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

Fel*_*ett 38 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"(这对于me)

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

Dan*_*Ruf 47

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

您可以通过添加;MV_STORE=FALSE;MVCC=FALSE删除数据库URL 来禁用它

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

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

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


Mar*_*man 11

.mv.db -files用于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的文件中 .

  • MVStore存储现在是1.4.x beta版的默认存储. (2认同)