Android - 房间迁移没有正确处理 CREATE 表

时间:2021-02-25 11:02:50

标签: android database sqlite android-room database-migration

我最近将 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=[]}

我不知道出了什么问题。

1 个答案:

答案 0 :(得分:0)

已解决

忘记添加了

PRIMARY KEY(content_id, bookmark_position, chapter_index, chapter_bookmark_position)

在我的原始 SQL 查询中。