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
您似乎修改了 Liquibase 已执行的 liquibase 变更集。不要这样做:恢复到以前的版本,并添加新的变更集。
然后添加另一个变更集(或任务),将该列中的所有 0 转换为“ACTIVE”,将该列中的所有 1 转换为“PASSIVE”。