我最近将 Room 库从 2.2.5 更新到了 2.3.0-beta01。 这是我添加的迁移。
"CREATE TABLE 'bookmark' ('id' TEXT, 'content_id' TEXT NOT NULL, 'bookmark_position' INTEGER NOT NULL, 'chapter_index' INTEGER NOT NULL,'chapter_bookmark_position' INTEGER NOT NULL, 'bookmarked_at' INTEGER NOT NULL, 'bookmark_note' TEXT, 'content_type' INTEGER NOT NULL, 'title' TEXT NOT NULL, 'img_url' TEXT, 'sync_pending' INTEGER NOT NULL)"
实体
@Parcelize
@Entity(tableName = "bookmark",
primaryKeys = ["content_id", "bookmark_position", "chapter_index", "chapter_bookmark_position"])
data class Bookmark(
@SerializedName("id")
val id: String?,
@SerializedName("content_id")
@ColumnInfo(name = "content_id")
var contentID: String,
@SerializedName("bookmark_position")
@ColumnInfo(name = "bookmark_position")
val bookmarkPosition: Long,
@SerializedName("chapter_index")
@ColumnInfo(name = "chapter_index")
val chapterIndex: Int,
@SerializedName("chapter_bookmark_position")
@ColumnInfo(name = "chapter_bookmark_position")
val chapterBookmarkPosition: Long,
..
我在这里使用复合 PK。在运行应用程序时,我收到此错误。唯一的区别是 primarayKeyPosition,它在已找到的内容中为 0。
预期
TableInfo{name='bookmark', columns={bookmark_note=Column{name='bookmark_note', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, content_type=Column{name='content_type', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, content_id=Column{name='content_id', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=1, defaultValue='null'}, bookmark_position=Column{name='bookmark_position', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=2, defaultValue='null'}, img_url=Column{name='img_url', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, chapter_index=Column{name='chapter_index', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=3, defaultValue='null'}, bookmarked_at=Column{name='bookmarked_at', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, sync_pending=Column{name='sync_pending', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, id=Column{name='id', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, title=Column{name='title', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, chapter_bookmark_position=Column{name='chapter_bookmark_position', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=4, defaultValue='null'}}, foreignKeys=[], indices=[]}
找到
TableInfo{name='bookmark', columns={bookmark_note=Column{name='bookmark_note', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, content_type=Column{name='content_type', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, content_id=Column{name='content_id', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, bookmark_position=Column{name='bookmark_position', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, img_url=Column{name='img_url', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, chapter_index=Column{name='chapter_index', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, bookmarked_at=Column{name='bookmarked_at', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, sync_pending=Column{name='sync_pending', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, id=Column{name='id', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0, defaultValue='null'}, title=Column{name='title', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, chapter_bookmark_position=Column{name='chapter_bookmark_position', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[]}
我不知道出了什么问题。
答案 0 :(得分:0)
已解决
忘记添加了
PRIMARY KEY(content_id, bookmark_position, chapter_index, chapter_bookmark_position)
在我的原始 SQL 查询中。