java.lang.IllegalStateException:迁移未正确处理。表格未更改

时间:2020-10-06 13:43:02

标签: android unit-testing kotlin testing room

尝试编写用于房间迁移的示例测试时遇到问题。当我运行测试时,我遇到了异常,但是导致该问题的表在数据库版本之间未发生变化。

Expected: TableInfo{name='UserSettings', columns={userLocalId=Column{name='userLocalId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=1, defaultValue='null'}, value=Column{name='value', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, key=Column{name='key', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=2, defaultValue='null'}}, foreignKeys=[], indices=[]} 
found: TableInfo{name='UserSettings', columns={userLocalId=Column{name='userLocalId', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=1, defaultValue='null'}, value=Column{name='value', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, key=Column{name='key', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=1, defaultValue='null'}}, foreignKeys=[], indices=null}

我可以看到发现与预期之间的差异,但是我不知道是什么原因造成的。 我的UserSettings.kt类:

@Entity(tableName = "UserSettings", primaryKeys = ["userLocalId", "key"])
data class UserSettingsEntity(
    @ColumnInfo(name = "userLocalId") val userLocalId: String,
    @ColumnInfo(name = "key") val key: String,
    @ColumnInfo(name = "value") val value: String
)

修改 发现了有关Roboelectric和迁移测试的已知问题。 Error on room database migration test, due to a wrong "primaryKeyPosition" value

1 个答案:

答案 0 :(得分:0)

这是拼写错误,请检查单词类型以获取列名值

value = Column {name ='value', ty ='TEXT',affinity ='2',notNull = true