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

升级H2 2.0后无法生成原H2格式数据库,求解决方案

H2 2.0版本生成旧格式数据库文件的解决方法

问题背景

在H2 1.3版本中,调用dataSource.getConnection()并使用URL jdbc:h2:file:C\DEV\test,会生成C\DEV\test.h2.db格式的文件型数据库。升级到H2 2.0.202版本后,相同操作生成的是test.mv.db文件;尝试添加URL参数MV_STORE=FALSE后,没有任何文件生成。

相关Maven依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <version>2.1.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.16</version>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>2.0.202</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.xerial</groupId>
    <artifactId>sqlite-jdbc</artifactId>
    <version>3.28.0</version>
</dependency>

解决方案

H2 2.0默认使用MVStore存储引擎(对应.mv.db后缀文件),旧版本的PageStore引擎(.h2.db格式)需要通过特定参数配合启用,同时要注意路径格式的正确性:

  • 修正后的JDBC URL示例:

    jdbc:h2:file:C:\\DEV\\test;MV_STORE=FALSE;MODE=LEGACY
    

    或使用正斜杠避免转义问题:

    jdbc:h2:file:C:/DEV/test;MV_STORE=FALSE;MODE=LEGACY
    
  • 参数作用说明:

    • MV_STORE=FALSE:强制切换回旧的PageStore存储引擎
    • MODE=LEGACY:开启旧版本兼容模式,消除H2 2.0与1.3版本的行为差异,避免因兼容性问题导致数据库文件无法生成
    • 路径必须使用双反斜杠\\或正斜杠/,单斜杠\会被解析为转义字符,导致路径错误,无法正常生成文件

另外需要注意:H2官方对旧PageStore引擎的支持正在逐步缩减,长期来看建议迁移到MVStore引擎,以获得更好的性能和功能支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:52:48