【问题标题】:How to add extra columns to Room entity when creating from pre-populated Database?从预填充的数据库创建时如何向 Room 实体添加额外的列?
【发布时间】:2020-05-14 05:52:44
【问题描述】:

我正在从资产文件夹中的 DB 创建房间数据库。

database = Room.databaseBuilder(this, AppDatabase::class.java, "x.db")
        .createFromAsset("databases/x.db")
        .fallbackToDestructiveMigration()
        .build()

使用实体类

@Entity(tableName = "x")
data class BibleDatas(
        @NotNull @ColumnInfo(name = "age") var name: Int,
        @NotNull @ColumnInfo(name = "name") var age: String,
        @Nullable @ColumnInfo(name = "saved") var saved: Int
        @PrimaryKey(autoGenerate = true) @NotNull @ColumnInfo(name = "id") var id: Int
    )

我的资产文件夹 DB 具有列名称和年龄,并且保存的列是动态创建的。

但是我收到一个错误提示

Pre-packaged database has an invalid schema: 
     Expected:
    TableInfo{name='x', columns={age=Column{age='age', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, saved=Column{age='saved', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=0, defaultValue='null'}, name=Column{age='name', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[]}
     Found:
    TableInfo{name='x', columns={age=Column{age='age', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0, defaultValue='null'}, name=Column{age='name', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}}, foreignKeys=[], indices=[]}

【问题讨论】:

    标签: android android-room android-database


    【解决方案1】:

    【讨论】:

    • 你能把错误发送到这里吗?所以我可以检查并让你知道解决方案。
    • 你能把错误发送到这里吗?所以我可以检查并让你知道解决方案。
    猜你喜欢
    • 2021-04-24
    • 1970-01-01
    • 2020-12-26
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多