簡體   English   中英

Android Room遷移無法正確處理?

[英]Android Room migration didn't properly handle?

我正在進行房間遷移,但出現此錯誤

java.lang.IllegalStateException: Migration didn't properly handle words(sharif.vocapower.db.entity.Word).
    Expected:
    TableInfo{name='words', columns={
    name=Column{name='name', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=1}, 
    mnemonic=Column{name='mnemonic', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0},
    meaning=Column{name='meaning', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0}, 
    isFavorite=Column{name='isFavorite', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0}}, foreignKeys=[], indices=[]}

    Found:
        TableInfo{name='words', columns={
        meaning_bangla=Column{name='meaning_bangla', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0},
        meaning=Column{name='meaning', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0}, 
        name=Column{name='name', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=1}, 
        mnemonic=Column{name='mnemonic', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0}, 
        isFavorite=Column{name='isFavorite', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0}}, foreignKeys=[], indices=[]}

我試圖添加一個新字段的meaning_bangla

這是我的實體課

@Entity(tableName = "words")
public class Word implements Serializable{

    @PrimaryKey
    @ColumnInfo(name = "name")
    @NonNull
    private String name;


@ColumnInfo(name = "meaning")
private String meaning;


@ColumnInfo(name = "mnemonic")
private String mnemonic;

@ColumnInfo(name = "meaning_bangla")
private String meaningBangla;

/*  private String meaningHindi;*/


@ColumnInfo(name = "isFavorite")
private int isFavorite;

@NonNull
public String getName() {
    return name;
}

public void setName(@NonNull String name) {
    this.name = name;
}

public String getMeaning() {
    return meaning;
}

public void setMeaning(String meaning) {
    this.meaning = meaning;
}

public int getIsFavorite() {
    return isFavorite;
}

public void setIsFavorite(int isFavorite) {
    this.isFavorite = isFavorite;
}

public String getMeaningBangla() {
    return meaningBangla;
}

public void setMeaningBangla(String meaningBangla) {
    this.meaningBangla = meaningBangla;
}

public void setMnemonic(String mnemonic) {
    this.mnemonic = mnemonic;
}

public String getMnemonic() {
    return mnemonic;
}

/*  public String getMeaningBangla() {
    return meaningBangla;
}

public void setMeaningBangla(String meaningBangla) {
    this.meaningBangla = meaningBangla;
}

public Word(@NonNull String name, String meaning, String mnemonic,  int isFavorite, String meaningBangla) {
    this.name = name;
    this.meaning = meaning;
    this.mnemonic = mnemonic;
    this.meaningBangla = meaningBangla;
    this.isFavorite = isFavorite;
}

}

我的遷移代碼如下所示

            database.execSQL("ALTER TABLE words "
                    + " ADD COLUMN meaning_bangla TEXT");

我正在嘗試解決此錯誤,但沒有運氣:(任何人都可以幫助我解決此錯誤。

嘗試將NOT NULL DEFAULT''添加到遷移中。

database.execSQL("ALTER TABLE words ADD COLUMN meaning_bangla TEXT NOT NULL default ''")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM