Liquibase liquibase.exception.ValidationFailedException:验证失败:

fff*_*fff 3 java xml spring multithreading liquibase

我尝试将 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;
    }
Run Code Online (Sandbox Code Playgroud)

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

这是枚举

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是 liquibase 配置

<column name="status" type="INT"/>
Run Code Online (Sandbox Code Playgroud)

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

<modifyDataType
                        columnName="status"
                        newDataType="varchar(255)"
                        tableName="merchant"/>
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

2 更改集校验和 |
classpath:config/liquibase/changelog/20160616145216_create_merchant.xml::1466077959485-1::(生成)现在是:7:5fb40924426396399804bb2cb7f74852
|
classpath:config/liquibase/changelog/20160720101800_load_data.xml::0000000000001-2::(生成)现在是:7:aa0084f69ca5301ef48cfb97beb41582
| | | liquibase.exception.ValidationFailedException:验证失败:f | 2 更改集校验和 |
classpath:config/liquibase/changelog/20160616145216_create_merchant.xml::1466077959485-1::(生成)现在是:7:5fb40924426396399804bb2cb7f74852
|
classpath: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)

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

此外

当我在此之后进行 diff 时也是如此

<

modifyDataType
                        columnName="status"
                        newDataType="varchar(255)"
                        tableName="merchant"/>
Run Code Online (Sandbox Code Playgroud)

它仍然没有转换为 varchar

JB *_*zet 6

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

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