Room Database Migration doesnt properly handle ALTER TABLE migration

后端 未结 7 2023
渐次进展
渐次进展 2020-12-13 06:36

Java.lang.IllegalStateException

Migration didn\'t properly handle user(therealandroid.github.com.roomcore.java.User).

Expected:

TableInfo{n

7条回答
  •  情歌与酒
    2020-12-13 06:45

    I have faced notNull differences in kotlin and found exception like below

    Expected:
    TableInfo{name='enDic', columns={definition=Column{name='definition', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, _id=Column{name='_id', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=1, defaultValue='null'}, favourite=Column{name='favourite', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, word=Column{name='word', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, usage=Column{name='usage', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[]}
    Found:
    TableInfo{name='enDic', columns={usage=Column{name='usage', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}, definition=Column{name='definition', type='text', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, _id=Column{name='_id', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1, defaultValue='null'}, favourite=Column{name='favourite', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}, word=Column{name='word', type='text', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[]}
    

    Then I used below mentioned code to solve that problem

    @Entity(tableName = "enDic")
    data class Word(
    
        @PrimaryKey(autoGenerate = true)
        @ColumnInfo(name = "_id")
        var _id: Int?,
    
        @ColumnInfo(name = "word")
        var word: String?,
    
        @ColumnInfo(name = "definition")
        var definition: String,
    
        @ColumnInfo(name = "favourite")
        var favourite: Int?,
    
        @ColumnInfo(name = "usage")
        var usage: Int?
    
    )
    

    Instead of this code

    @Entity(tableName = "enDic")
    data class Word(
    
        @PrimaryKey(autoGenerate = true)
        @ColumnInfo(name = "_id")
        var _id: Int,
    
        @ColumnInfo(name = "word")
        var word: String,
    
        @ColumnInfo(name = "definition")
        var definition: String,
    
        @ColumnInfo(name = "favourite")
        var favourite: Int,
    
        @ColumnInfo(name = "usage")
        var usage: Int
    
    )
    

提交回复
热议问题