【发布时间】:2018-11-22 23:46:14
【问题描述】:
我正在尝试使用 liquibase 和 h2(在 mysql 模式下)运行我的 Spring Boot 应用程序的测试。 Liquibase 更改日志是特定于 MySQL 的,所以我认为在 MySQL 模式下启用 liquibase 和 h2 进行测试可以解决问题。
问题是 Liquibase 没有将数据库检测为 MySQL,而是检测为 H2。因此,在执行迁移时,它使用了错误的数据类型,例如CLOB 而不是 TEXT,这会导致休眠验证器失败。
我需要知道是否有任何方法可以强制 liquibase 使用 MySQL 特定的迁移,而不管应用程序实际连接到的数据库是什么。不确定 liquibase 是如何计算数据库的,但我猜可能使用驱动程序名称或 db url?
如果有人有任何替代解决方案,请提出想法!
spring:
profiles:
active: test
datasource:
url: jdbc:h2:mem:ebdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=MySQL
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
database-platform: org.hibernate.dialect.MySQL5Dialect
database: MYSQL
hibernate:
ddl-auto: validate
liquibase:
change-log: classpath:liquibase/liquibase-changeLog.xml
enabled: true
【问题讨论】:
标签: spring spring-boot integration-testing h2 liquibase