Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Liquibase liquibase.exception.ValidationFailedException: Validation Failed:

I tried to modify int column to varchar but it gives a lot of errors starting with this.

    @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;
    }

this is the column in domain. it is enum.

this is enum

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;
    }
}

this is liquibase confg

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

i tried to change here. or i added this inside 20160616145216

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

but it did not work.

2 change sets check sum |
classpath:config/liquibase/changelog/20160616145216_create_merchant.xml::1466077959485-1:: (generated) is now: 7:5fb40924426396399804bb2cb7f74852
|
classpath:config/liquibase/changelog/20160720101800_load_data.xml::0000000000001-2:: (generated) is now: 7:aa0084f69ca5301ef48cfb97beb41582
| | | liquibase.exception.ValidationFailedException: Validation Failed: f | 2 change sets check sum |
classpath:config/liquibase/changelog/20160616145216_create_merchant.xml::1466077959485-1:: (generated) is now: 7:5fb40924426396399804bb2cb7f74852
|
classpath:config/liquibase/changelog/20160720101800_load_data.xml::0000000000001-2:: (generated) is now: 7:aa0084f69ca5301ef48cfb97beb41582
| | at liquibase.changelog.DatabaseChangeLog.validate(DatabaseChangeLog.java:215) | at liquibase.Liquibase.update(Liquibase.java:208) | at liquibase.Liquibase.update(Liquibase.java:192) | at liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:434) | at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:391) | at net.infoowl.fraud.config.liquibase.AsyncSpringLiquibase.initDb(AsyncSpringLiquibase.java:63) 1 | at net.infoowl.fraud.config.liquibase.AsyncSpringLiquibase.lambda$afterPropertiesSet$0(AsyncSpringLiquibase.java:49) | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) | at java.lang.Thread.run(Thread.java:745)

also

rror: Unknown name value [0] for enum class [net.infoowl.fraud.domain.util.MerchantStatus]; nested exception is java.lang.IllegalArgumentException: Unknown name value [0] for enum class [net.infoowl.fraud.domain.util.MerchantStatus]

furthermore

also when i do diff after this

<

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

it still doesnot convert to varchar

like image 954
fff Avatar asked Sep 07 '25 18:09

fff


1 Answers

You seem to have modified a liquibase changeset that has already been executed by Liquibase. Don't do that: revert to the previous version, and add a new changeset.

Then add another changeSet (or task) transforming all the 0 in that column to 'ACTIVE', and all the 1 in that column to 'PASSIVE'.

like image 62
JB Nizet Avatar answered Sep 10 '25 08:09

JB Nizet