【问题标题】:Liquibase liquibase.exception.ValidationFailedException: Validation Failed:Liquibase liquibase.exception.ValidationFailedException:验证失败:
【发布时间】:2016-12-21 17:25:25
【问题描述】:

我尝试将 int 列修改为 varchar,但从这里开始会出现很多错误。

    @NotNull
    @Column(nullable = false)
    @Enumerated(value = EnumType.STRING)
    private MerchantStatus status;

   public MerchantStatus getStatus() {
        return status;
    }

    public Merchant setStatus(MerchantStatus status) {
        this.status = status;
        return this;
    }

这是域中的列。它是枚举。

这是枚举

public enum MerchantStatus {
    ACTIVE("merchant.status.active"),
    PASSIVE("merchant.status.passive");

    private String key;

    MerchantStatus(String key) {
        this.key = key;
    }

    public String getKey() {
        return key;
    }
}

这是 liquibase 配置

<column name="status" type="INT"/>

我试图改变这里。或者我在 20160616145216 中添加了这个

<modifyDataType
                        columnName="status"
                        newDataType="varchar(255)"
                        tableName="merchant"/>

但它不起作用。

2 个变更集校验和 |
类路径:config/liquibase/changelog/20160616145216_create_merchant.xml::1466077959485-1:: (生成)现在是:7:5fb40924426396399804bb2cb7f74852
|
类路径:config/liquibase/changelog/20160720101800_load_data.xml::0000000000001-2:: (生成)现在是:7:aa0084f69ca5301ef48cfb97beb41582
| | | liquibase.exception.ValidationFailedException:验证失败: f | 2 个变更集校验和 |
类路径:config/liquibase/changelog/20160616145216_create_merchant.xml::1466077959485-1:: (生成)现在是:7:5fb40924426396399804bb2cb7f74852
|
类路径:config/liquibase/changelog/20160720101800_load_data.xml::0000000000001-2:: (生成)现在是:7:aa0084f69ca5301ef48cfb97beb41582
| |在 liquibase.changelog.DatabaseChangeLog.validate(DatabaseChangeLog.java:215) |在 liquibase.Liquibase.update(Liquibase.java:208) |在 liquibase.Liquibase.update(Liquibase.java:192) |在 liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:434) |在 liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:391) |在 net.infoowl.fraud.config.liquibase.AsyncSpringLiquibase.initDb(AsyncSpringLiquibase.java:63) 1 |在 net.infoowl.fraud.config.liquibase.AsyncSpringLiquibase.lambda$afterPropertiesSet$0(AsyncSpringLiquibase.java:49) |在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) |在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) |在 java.lang.Thread.run(Thread.java:745)

还有

错误:枚举类的未知名称值 [0] [net.infoowl.fraud.domain.util.MerchantStatus];嵌套异常是 java.lang.IllegalArgumentException:枚举的未知名称值 [0] 类 [net.infoowl.fraud.domain.util.MerchantStatus]

还有

还有当我在这之后做差异时

modifyDataType
                        columnName="status"
                        newDataType="varchar(255)"
                        tableName="merchant"/>

它仍然没有转换为 varchar

【问题讨论】:

  • 您似乎修改了已由 Liquibase 执行的 liquibase 变更集。不要这样做:恢复到以前的版本,并添加一个新的变更集。
  • 对变更集有好处吗?同样,当我在此 之后进行差异时,它仍然不会转换为 varchar
  • 什么意思?您预计会发生什么以及会发生什么?
  • 我想在前端查看字符串值,但尽管它说 rror: Unknown name value [0] for enum class [net.infoowl.fraud.domain.util.MerchantStatus];嵌套异常是 java.lang.IllegalArgumentException: Unknown name value [0] for enum class [net.infoowl.fraud.domain.util.MerchantStatus] © 也添加到问题中。
  • 将列的类型从 int 更改为 varchar 不会神奇地将所有值从 0 更改为 'ACTIVE' 和从 1 更改为 'PASSIVE'。您也需要将其添加到您的变更集中。

标签: java xml spring multithreading liquibase


【解决方案1】:

您似乎修改了已由 Liquibase 执行的 liquibase 变更集。不要这样做:恢复到以前的版本,并添加一个新的变更集。

然后添加另一个 changeSet(或任务),将该列中的所有 0 转换为“ACTIVE”,并将该列中的所有 1 转换为“PASSIVE”。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。

      config/liquibase/changelog/20211227120229_added_entity_Product.xml::20211227120229-1-data::jhipster was: 8:d9bea6afc2902ce60cdfa54e82d248c4 but is now: 8:e353c8335afd112dfef95e3e95562f56
    

    我正在使用 jHipster 创建实体(数据库表)及其相关屏幕和其他文件。 jhipster 处理得很好。 我修改了一个现有的表结构并在其中添加了新列。从那以后我开始收到这个错误。我没有手动修改 liquibase xml 文件。它是由 jhipster 脚本完成的。对我有用的解决方案是使用以下命令在表 DATABASECHANGELOG 中手动修改 MD5SUM。

    update DATABASECHANGELOG set MD5SUM = '8:e353c8335afd112dfef95e3e95562f56'
    where MD5SUM = '8:d9bea6afc2902ce60cdfa54e82d248c4'; 
    

    在此更新之后,它解决了我的问题,但是我最后添加的列在表中不存在。所以我需要手动添加。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      • 2022-01-01
      • 2021-03-10
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 2016-12-29
      相关资源
      最近更新 更多