我尝试将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 confg
<column name="status" type="INT"/>
我试着在这里改变。或者我在20160616145216内添加了这个
<modifyDataType
columnName="status"
newDataType="varchar(255)"
tableName="merchant"/>
但它不起作用。
2变更集校验和|
类路径:配置/ liquibase /变化/ 20160616145216_create_merchant.xml :: 1466077959485-1 :: (生成)现在是:7:5fb40924426396399804bb2cb7f74852
|
类路径:配置/ liquibase /变化/ 20160720101800_load_data.xml :: 0000000000001-2 :: (生成)现在是: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) | at 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)
也
rror:枚举类的未知名称值[0] [net.infoowl.fraud.domain.util.MerchantStatus];嵌套异常是 java.lang.IllegalArgumentException:枚举的未知名称值[0] class [net.infoowl.fraud.domain.util.MerchantStatus]
此外
当我在此之后做差异时
&LT;
modifyDataType
columnName="status"
newDataType="varchar(255)"
tableName="merchant"/>
它仍然没有转换为varchar
答案 0 :(得分:3)
您似乎修改了Liquibase已执行的liquibase变更集。不要这样做:恢复到以前的版本,并添加一个新的变更集。
然后添加另一个changeSet(或任务),将该列中的所有0转换为&#39; ACTIVE&#39;,并将该列中的所有1转换为&#39; PASSIVE&#39;。