【发布时间】:2019-09-18 18:05:16
【问题描述】:
日志包含:
java.lang.IllegalStateException: Migration didn't properly handle broadBandPlans(duleaf.duapp.splash.data.local.models.FixedPlanLocal).
*Expected:
TableInfo{name='broadBandPlans', columns={speed=Column{name='speed', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0}, prodID=Column{name='prodID', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=1}}, foreignKeys=[], indices=[]}*
*Found:
TableInfo{name='broadBandPlans', columns={prodID=Column{name='prodID', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=1}, speed=Column{name='speed', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0}}, foreignKeys=[], indices=[]}*
下面是 FixedPlanLocal 类,有人可以在这里指导我为什么 Room 期望速度作为第一列,然后是 prodID,我应该如何解决这个问题?
@Entity(tableName = "broadBandPlans")
public class FixedPlanLocal {
@ColumnInfo(name = "prodID")
@PrimaryKey
@NonNull
String prodID;
@ColumnInfo(name = "speed")
String speed;
public FixedPlanLocal(@NonNull String prodID, String speed) {
this.prodID = prodID;
this.speed = speed;
}
@NonNull
public String getProdID() {
return prodID;
}
public void setProdID(@NonNull String prodID) {
this.prodID = prodID;
}
public String getSpeed() {
return speed;
}
public void setSpeed(String speed) {
this.speed = speed;
}
@Override
public boolean equals(Object obj) {
return this.prodID.equals(((FixedPlanLocal) obj).prodID);
}
}
,
【问题讨论】:
标签: android database sqlite android-room