Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java H2数据库不支持schema.package.function结构_Java_Spring Boot_Integration Testing_H2_In Memory Database - Fatal编程技术网

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

Java H2数据库不支持schema.package.function结构,java,spring-boot,integration-testing,h2,in-memory-database,Java,Spring Boot,Integration Testing,H2,In Memory Database,在我的项目中,我们使用oracle数据库作为主应用程序数据库,使用H2作为内存数据库,只运行集成测试用例。Oracle db具有许多结构为schema.package.function的函数。问题是,我无法在H2中为集成测试用例重新创建相同的函数,因为H2以dbname.schemaname.functionname的形式处理它 例如:当代码使用oracle db运行时,请从dual works中选择MDM.NEXT_KEY.NEXT_REF_SOURCE_KEY。在H2上的集成测试用例期间,它

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

例如:当代码使用oracle db运行时,请从dual works中选择MDM.NEXT_KEY.NEXT_REF_SOURCE_KEY。在H2上的集成测试用例期间,它抛出错误DB MDM not found。因此,我在h2设置中将db名称设置为MDM,将schema名称设置为NEXT_键。它成功了。但是我的下一个函数PAYERS.KEY\u TRANSLATIONS.CORE\u ENHANCED\u DESC\u 4\u KEY失败,现在说找不到DB PAYERS

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

如果H2无法实现这一点,您能为spring引导推荐一个好的内存db替代方案吗


谢谢你的帮助

我解决了这个问题。在此处添加解决方案链接,以便它可以帮助其他人

设置此标志IGNORE_CATALOGS=TRUE修复了此问题。启用时,将忽略目录数据库的名称

spring.datasource.url=jdbc:h2:mem:testdb;模式=Oracle;忽略目录=TRUE


请参阅下面的链接

内存中的数据库永远不会达到完整RDBMS支持的标准。您正在使用Oracle,然后在测试中使用Oracle。使用testcontainers之类的工具来引导oracle数据库,以便在测试中使用。