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

如何在Pentaho中连接嵌入式Spring应用中的H2数据库

H2嵌入式Spring应用与Pentaho连接报错90067-214的解决思路

问题本质

嵌入式H2默认是单进程独占访问模式,Spring应用已经占用了本地文件数据库,你在Pentaho里直接用文件路径+Spring的8080端口连接,本质是混淆了嵌入式模式和服务器模式的访问逻辑,这才是报错的核心原因,加FILE_LOCK=NO只能解决部分文件锁问题,但解决不了跨进程访问的根本冲突。

具体解决步骤

  1. 开启H2的自动服务器模式(推荐)
    修改Spring应用的配置文件(application.properties或application.yml),给H2的JDBC URL添加AUTO_SERVER=TRUE参数,让H2自动启动TCP服务,允许外部进程访问:

    # application.properties示例
    spring.datasource.url=jdbc:h2:file:C:\gesdb;AUTO_SERVER=TRUE
    spring.h2.console.enabled=true
    

    这个参数会让H2在嵌入式访问的同时,自动监听端口处理外部连接,无需手动启动服务器。

  2. 调整Pentaho的连接配置

    • 数据库类型选择H2,连接方式切换为TCP/IP
    • JDBC URL填写:jdbc:h2:tcp://localhost:9092/C:\gesdb(如果自动服务器默认端口不是9092,可查看Spring日志里的H2启动信息),或者直接用jdbc:h2:file:C:\gesdb;AUTO_SERVER=TRUE
    • 端口填写H2的TCP服务端口(默认9092),不要填Spring应用的8080端口(8080是Web控制台端口,不是数据库连接端口)
    • 用户名密码和Spring应用里的H2配置保持一致(默认sa,密码为空)
  3. 统一H2版本(关键排查点)
    版本不兼容是这类报错的常见原因:

    • 查看Spring应用pom.xml或gradle里的H2版本(比如com.h2database:h2:2.1.214)
    • 检查Pentaho安装目录data-integration/lib下的h2.jar版本,替换成和Spring一致的版本,避免驱动和数据库版本不匹配导致的连接异常
  4. 文件权限与路径校验

    • 确保Pentaho进程有C:\gesdb文件夹及对应H2文件(比如gesdb.mv.db)的读写权限,不要放在系统受限目录(如Program Files)
    • JDBC URL里的路径可以用正斜杠C:/gesdb替代反斜杠,避免转义问题:jdbc:h2:file:C:/gesdb;AUTO_SERVER=TRUE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:42:57