【问题标题】:java.lang.IllegalStateException: Migration didn't properly handle. Tables not changedjava.lang.IllegalStateException:迁移没有正确处理。表未更改
【发布时间】:2021-01-21 09:49:32
【问题描述】:

我在尝试为房间迁移编写示例测试时遇到问题。当我运行测试时,我遇到了上述异常,但是导致问题的表在 db 版本之间没有变化。

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

【问题讨论】:

    标签: android unit-testing kotlin testing room


    【解决方案1】:

    是拼写错误,请检查列名值的字型

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

    【讨论】:

    • 我在粘贴时犯了这个错误,这些文件是在运行测试时生成的。感谢您的关注
    猜你喜欢
    • 2018-03-27
    • 1970-01-01
    • 2020-02-17
    • 2019-04-23
    • 2019-04-13
    • 2021-05-27
    • 1970-01-01
    • 2021-11-13
    • 2020-04-05
    相关资源
    最近更新 更多