H2 数据库不支持 schema.package.function 结构

H2 Database doesn’t support schema.package.function structure

在我的项目中,我们使用 oracle 数据库作为主要应用程序数据库,使用 H2 作为内存数据库 运行 仅集成测试用例。 Oracle 数据库有许多结构为“schema.package.function()”的函数。问题是,我无法在 H2 中为集成测试用例重新创建相同的函数,因为 H2 以“dbname.schemaname.functionname()”的形式处理它。

例如:当代码 运行s 使用 oracle db 时,“SELECT MDM.NEXT_KEYS.NEXT_REF_SOURCE_KEY from dual”有效。在 H2 上的集成测试用例期间,它抛出错误“找不到 DB MDM”。所以我将数据库名称设置为 MDM,并将模式名称设置为 NEXT_KEYS in h2 setup.It 有效。但是我的下一个功能 PAYERS.KEY_TRANSLATIONS.CORE_ENHANCED_DESC_4_KEY 现在失败了,说“找不到 DB PAYERS”。

改变 oracle 函数是不可能的,因为它们被多个团队使用。

如果 H2 无法做到这一点,您能否为 spring boot

推荐一个好的备用内存数据库

感谢您的帮助!

我能够解决这个问题。在此处添加解决方案 link 以便它可以帮助某人

设置此标志 IGNORE_CATALOGS=TRUE 解决了这个问题。启用后,目录(数据库)的名称将被忽略。

spring.datasource.url = jdbc:h2:mem:testdb;MODE=Oracle;IGNORE_CATALOGS=TRUE

参考下面link https://github.com/h2database/h2database/issues/2893