![](/img/trans.png)
[英]Android Room: Migration didn't properly handle, Expected and Found are equal
[英]Migration didn't properly handle:
升級數據庫時出現此錯誤:
java.lang.IllegalStateException:遷移未正確處理:seriesPosition(com.redline.xstreamredline.db.entities.SeriesPosition)。
Expected:
TableInfo{name='seriesPosition', columns={seasonId=Column{name='seasonId', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}, uid=Column{name='uid', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1, defaultValue='null'}, total_time=Column{name='total_time', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}, position=Column{name='position', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}, portalUid=Column{name='portalUid', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}, episodeId=Column{name='episodeId', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}, seriesId=Column{name='seriesId', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[Index{name='index_seriesPosition_portalUid_seriesId_seasonId_episodeId', unique=true, columns=[portalUid, seriesId, seasonId, episodeId]}]}
```
```
Found:
TableInfo{name='seriesPosition', columns={seasonId=Column{name='seasonId', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=3, defaultValue='null'}, uid=Column{name='uid', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}, total_time=Column{name='total_time', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}, position=Column{name='position', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}, portalUid=Column{name='portalUid', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1, defaultValue='null'}, episodeId=Column{name='episodeId', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=4, defaultValue='null'}, seriesId=Column{name='seriesId', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=2, defaultValue='null'}}, foreignKeys=[], indices=[]}
我不知道如何指定索引。
database.execSQL("CREATE TABLE `seriesPosition` (`uid` INTEGER," +
" `portalUid` INTEGER, `seriesId` INTEGER, `seasonId` INTEGER," +
" `episodeId` INTEGER, `position` INTEGER, `total_time` INTEGER," +
" PRIMARY KEY(`portalUid`, `seriesId`, `seasonId`,`episodeId`))")
要定義復合主鍵,您可以在 Entity 注釋中使用primaryKeys參數,例如:-
@Entity(tableName = "seriesPosition", primaryKeys = ["portalUid","seriesId","episodeId"])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.