android - 预打包的数据库具有无效的架构
问题描述
这是我的实体
@Entity(tableName = "Task")
class TaskEntity {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "ID")
var id: Long = 0
@ColumnInfo(name = "Title")
lateinit var title: String
}
我将此类添加到我的数据库类实体列表中,同时尝试检查是否出现以下异常
java.lang.IllegalStateException: Pre-packaged database has an invalid schema: Task(com.idesign.iplacenotes.controller.database.room.entity.TaskEntity).
Expected:
TableInfo{name='Task', columns={Title=Column{name='Title', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0, defaultValue='null'}, ID=Column{name='ID', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=1, defaultValue='null'}}, foreignKeys=[], indices=[]}
Found:
TableInfo{name='Task', columns={}, foreignKeys=[], indices=[]}
可能是非常愚蠢的错误,但我不知道我错过了什么。
这是迁移代码,
private val MIGRATION_35_36 = object : Migration(35, 36) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("CREATE TABLE `Task` (`ID` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `Title` TEXT NOT NULL)")
}
}
在这里我正在初始化我的数据库
fun getInstance(context: Context): AppDatabase {
if (instance == null) {
instance = Room.databaseBuilder(context, AppDatabase::class.java, DATABASE_NAME)
.fallbackToDestructiveMigration()
.addMigrations(MIGRATION_35_36)
.allowMainThreadQueries()
.build()
}
return instance as AppDatabase
}
解决方案
推荐阅读
- c++ - 类引用成员 - 不是具有合成构造函数的类中的错误,而是用户定义的构造函数中的错误
- javascript - 使用键过滤对象数组
- python - tf.contrib.rnn.LayerNormBasicLSTMCell 的贬低
- javascript - Amcharts 热图工具提示适配器
- arm64 - 如何在 EL2 处处理 arm8 (AArch64) EL1 IRQ/FIQ ISR?
- class - 如何在没有条件语句的情况下创建不同的类?
- linux - 修复从脚本调用时处理包含括号或空格的文件或目录时的 bash 语法错误和 scp 文件未找到错误
- javascript - 如何将 Promise 转换为 Angular 中的 observable
- python - 无法将查询结果导出到 csv 文件
- c - 具有多个中断标志的硬件模块 (C)