2016-08-15 71 views
0

我試圖將int列修改爲varchar,但是它給出了很多以此開始的錯誤。Liquibase liquibase.exception.ValidationFailedException:驗證失敗:

@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 CONFG

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

我試圖改變這裏。或者我在裏面添加了這個20160616145216

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

但它沒有工作。

2 change sets check sum |
類路徑:配置/ liquibase /更改日誌/ 20160616145216_create_merchant.xml :: 1466077959485-1 :: (生成)現在是:7:5fb40924426396399804bb2cb7f74852
|
classpath:config/liquibase/changelog/20160720101800_load_data.xml :: 0000000000001-2 :: (generated)現在是:7:aa0084f69ca5301ef48cfb97beb41582
| | | liquibase.exception.ValidationFailedException:驗證失敗: f | 2改變集合校驗和|
類路徑:配置/ liquibase /更改日誌/ 20160616145216_create_merchant.xml :: 1466077959485-1 :: (生成)現在是:7:5fb40924426396399804bb2cb7f74852
|
類路徑:配置/ liquibase /更改日誌/ 20160720101800_load_data.xml :: 0000000000001-2 :: (生成)現在是:7:aa0084f69ca5301ef48cfb97beb41582
| |在 liquibase.changelog.DatabaseChangeLog.validate(DatabaseChangeLog.java:215) | (liquibase.java:208) |在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) |在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) |在 java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617) |在java.lang.Thread.run(Thread.java:745)

RROR:未知的名稱值[0],枚舉類 [net.infoowl.fraud.domain.util .MerchantStatus];嵌套異常是 java.lang.IllegalArgumentException:枚舉的未知名稱值[0] class [net.infoowl.fraud.domain.util。MerchantStatus]

此外

還當我做差異這

<

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

後仍然不列入轉換爲varchar

+0

您似乎已經修改了Liquibase已經執行的liquibase變更集。不要這樣做:恢復到以前的版本,並添加一個新的變更集。 –

+0

它是否適合changeset?還當我在此之後 做差異 它仍然不列入轉換爲varchar – fff

+0

你是什麼意思?你期望會發生什麼以及會發生什麼? –

回答

1

你似乎已經修改了liquibase變更這已經由Liquibase執行。不要這樣做:恢復到以前的版本,並添加一個新的變更集。

然後在該列進行「被動」添加其他變更(或任務)該列中爲「ACTIVE」轉化所有的0,並且所有的1。