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

ColdBox+Lucee环境下H2数据库执行migrate up报schema未找到及OSGi依赖错误

问题解决方案

你遇到的两次报错分别对应两类配置问题,补充说明:你之前Quick可以正常连接数据库,是因为Quick调用的是Lucee服务中配置的数据源,已经提前加载了lib目录下的H2驱动,而commandbox-migrations默认使用独立的连接配置走OSGi容器加载驱动,所以才会出现两边运行状态不一致的情况。具体解决方案如下:

1 初始"information_schema不存在"报错的根因

H2默认标识符大小写敏感,迁移工具生成的SQL语句默认给schema、表名加了双引号,而你配置的MySQL模式下默认使用小写标识符,导致查询时匹配不到系统内置的大写INFORMATION_SCHEMA,你后续添加的DATABASE_TO_LOWER=TRUE;CASE_INSENSITIVE_IDENTIFIERS=TRUE连接参数已经解决了这个问题。

2 当前OSGi依赖报错的解决方案

这个错误是H2 1.4.200官方bundle的OSGi依赖声明和Lucee/CommandBox的运行环境不匹配导致的,按以下步骤调整配置:

  • 修正cfmigrations的schema配置:你当前把schema设置为INFORMATION_SCHEMA是错误的,这个是H2的系统内置schema,你的迁移记录表和业务表都应该存放在自定义的业务schema中,把schema值改回appDB。
  • 移除connectionInfo中的bundleName和bundleVersion配置:直接使用你放在/lib目录下的H2驱动jar包,跳过CommandBox的OSGi bundle依赖校验,前提是你已经在box.json中把lib目录加入了类加载路径,配置示例:
"jvm": {
    "classPath": ["./lib/**/*.jar"]
}
  • 配置修改完成后执行box restart重启CommandBox运行实例,重新加载类路径后再执行迁移命令即可。
    如果仍然报错,可以换回Lucee官方适配的1.3.172版本H2驱动,把连接参数替换为MODE=MySQL;DATABASE_TO_UPPER=FALSE即可适配大小写要求,不需要额外调整OSGi相关配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 23:15:05