Flyway布尔位模式版本并验证问题

时间:2016-06-17 17:38:10

标签: hibernate hsqldb postgresql-9.4 flyway

我使用flyway 4.0,hibernate 5.1.0.Final和2个数据库:postgresql 9.4.1208和hsqldb 2.3.1(用于测试)

我们需要监督应用程序的数据库状态。我创建一个SchemaVersionEntity来检查数据库(脚本的版本和最后一个脚本的状态成功)实体列成功的类型是Boolean

我们做jpa验证: 在flyway postgresql中,createMetaDataTable成功映射到布尔值:https://github.com/flyway/flyway/blob/master/flyway-core/src/main/resources/org/flywaydb/core/internal/dbsupport/postgresql/createMetaDataTable.sql

在flyway中的

hsql createMetaDataTable成功映射到位:(自v2起存在布尔值)https://github.com/flyway/flyway/blob/master/flyway-core/src/main/resources/org/flywaydb/core/internal/dbsupport/hsql/createMetaDataTable.sql

所以我收到错误:

  

org.hibernate.tool.schema.spi.SchemaManagementException:架构验证:表[schema_version]中的[success]列遇到错误的列类型;找到[bit(Types#BIT)],但期望[boolean(Types#BOOLEAN)]

什么是最佳解决方案? 修改flyway \ flyway-core \ src \ main \ resources \ org \ flywaydb \ core \ internal \ dbsupport \ hsql?

  "success" BOOLEAN NOT NULL

1 个答案:

答案 0 :(得分:0)

您可以自定义H2Dialect并在测试配置

中使用它
public class CustomH2Dialect extends H2Dialect {

    public CustomH2Dialect() {
        super();
        registerColumnType(Types.BOOLEAN, "bit");
    }
}