当前位置: 首页 > 知识库问答 >
问题:

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

颜哲彦
2023-03-14

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

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

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

在flyway hsql CreateMatadataTable中,成功映射到位:(自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]中的列[成功]中遇到错误的列类型;找到[bit(类型#BIT)],但期望[boolean(类型#BOOLEAN)]

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

  "success" BOOLEAN NOT NULL

共有1个答案

堵宏毅
2023-03-14

您可以自定义H2Dialect并在测试配置中使用它

public class CustomH2Dialect extends H2Dialect {

    public CustomH2Dialect() {
        super();
        registerColumnType(Types.BOOLEAN, "bit");
    }
}
 类似资料:
  • 我想使用 Flyway 获取特定数据库的最新架构版本值。Flyway 中是否有函数可以在命令行中获取当前架构版本号? 我可以运行以下命令: 这为我提供了数据库的整个架构内容(缩短),如下所示: 我只对最后一个架构条目版本“1.5.9”值感兴趣。 我的环境如下: < li>Windows 7 < li>Flyway 3.0

  • 每当我试图验证一个模式或使用模糊匹配来验证来自JSON对象中响应的布尔字段时,尽管输入了不正确的数据,它似乎总是通过。 为了便于查询,让我们将重点放在使用内联模糊匹配,就像将模式存储在单独的文件中一样。 功能文件: 答复: 我断言的目的是断言每个值以任何顺序返回正确的值类型。如果由于任何原因没有返回该值,或者存在比模式中定义的值更多的值,我希望测试失败。我怎样才能做到这一点? 我假设use。但是,

  • 我有一个用例,我将把一个json-schema作为输入,验证它,然后保存在我的系统中。稍后,我将获取json数据,我需要使用上面提到的json-schema来验证这些数据。给定这个场景,我需要执行两个级别的验证: 我使用的是json-schema-validator jar,只能找到第二级验证,在文档中找不到json-schema验证。例如:假设我们有以下示例json-schema:

  • Hy,我有一个webapplication,我试图在其中集成JPA2(Hibernate)+Spring+Flyway 我将flyway添加到我的ApplicationContext中,如下所示: 有什么想法吗?

  • 问题内容: 我声明一个布尔变量。例如, 现在,如果我执行以下代码段: 我懂了。好吧,我知道它很明显,但是我需要知道其背后的原因。 问题答案: 当您评估对象的布尔值时,Java会将其取消装箱(自装箱功能,自1.5开始)。因此,实际的代码是:。然后它抛出。对于任何装箱的值,将空对象拆箱将引发此异常。 在1.5之前,您必须手动将值拆箱:所以它更明显(也更加冗长:)

  • 我正在使用Spring数据卡桑德拉连接到我的卡桑德拉数据库。我已经创建了实体java对象(带有@Table注释),以便从数据库中进行一些简单的提取。 我想知道如何在启动时进行模式验证,比如像在Hibernate中那样。 请注意,我阅读了有关查询验证的信息,但我对验证表名和列名感兴趣。