hibernate - Spring hibernate liquibase 集成测试失败
问题描述
我可以使用 liquibase 正确运行我的应用程序。使用的环境包括spring、hibernate和mysql。当我尝试运行集成测试(具有 h2 db)时,我得到了这个异常:
Caused by: liquibase.exception.DatabaseException: org.h2.jdbc.JdbcSQLException: Schema "pbr_tenant" not found; SQL statement: Caused by: liquibase.exception.DatabaseException: org.h2.jdbc.JdbcSQLException: Schema "pbr_tenant" not found; SQL statement: SET SCHEMA pbr_tenant [90079-197]
at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:307)
at org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration$DataSourceClosingSpringLiquibase.afterPropertiesSet(LiquibaseAutoConfiguration.java:218)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1803)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1740)
... 105 more Caused by: org.h2.jdbc.JdbcSQLException: Schema "pbr_tenant" not found; SQL statement: SET SCHEMA pbr_tenant [90079-197]
这是我用于集成测试的 application.yml 的样子。
datasource:
url: jdbc:h2:mem:data_import-int;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MySQL
platform: h2
username: sa
password:
driverClassName: org.h2.Driver
jpa:
database-platform: org.hibernate.dialect.H2Dialect
properties:
hibernate:
show_sql: true
use_sql_comments: true
format_sql: true
liquibase:
url: jdbc:h2:mem:pbr_tenant;MODE=Mysql;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;DATABASE_TO_UPPER=false;INIT=CREATE SCHEMA IF NOT EXISTS pbr_tenant;SCHEMA=pbr_tenant
contexts: integration-test
parameters:
schema: pbr-tenant
change-log: classpath:db/changelog/fini-changelog.yml
解决方法是什么。
解决方案
因此,您似乎缺少架构。尝试以下。
datasource:
url: jdbc:h2:mem:data_import-int;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS pbr_tenant;MODE=MySQL
platform: h2
username: sa
password:
driverClassName: org.h2.Driver
如果架构不存在,则能够创建它。你也可以试试:
datasource:
url: jdbc:h2:mem:data_import-int;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS pbr_tenant;SET SCHEMA pbr_tenant;MODE=MySQL
platform: h2
username: sa
password:
driverClassName: org.h2.Driver
额外选择该架构
推荐阅读
- c - 在 Unix 中工作的 Exec 调用说明
- javascript - How to remove document["oncontextmenu"] and document["onselectstart"]?
- java - 拉取 30000 行的 Spring JDBC 查询挂起
- javascript - 时间线非活动选项卡上的 Chrome 内存分配检测
- java - spring 中的@Profile 注解可以使用占位符吗?
- c# - 使用 Pcap.net 获取采样周期内流量最大的网络接口
- vue.js - 如何处理来自存储在vue中的空数据
- html - 使两个 html 范围输入并排没有间隙并占据填充父 div 宽度
- spring - Fabric8:无法执行目标 - docker:build
- .net - 将字符替换为 HEX 代码的正则表达式函数