Android 预打包数据库的架构无效
这是我的实体Android 预打包数据库的架构无效,android,kotlin,android-room,Android,Kotlin,Android Room,这是我的实体 @Entity(tableName = "Task") class TaskEntity { @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "ID") var id: Long = 0 @ColumnInfo(name = "Title") lateinit var title: String } 我将这个类添加到我的数据库类实体列表中,同时尝试检查是否出现以下异常 java.l
@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
}
您需要添加房间数据库迁移支持,或者如果您在现有应用程序中添加了新字段,则必须卸载旧版本并在同一手机中安装新版本device@MD,我在新安装时遇到此错误…您能告诉我如何初始化房间数据库吗?@MD我已更新帖子。@MD,我使用的SQLiteOpenHelper版本高达35,这是导致此问题的原因吗?您需要添加房间数据库迁移支持,或者如果您在现有应用程序中添加了新字段,则必须卸载旧版本并在同一手机中安装新版本device@MD,我在新安装时遇到此错误…您能告诉我如何初始化Room数据库吗?@MD我已经更新了帖子。@MD,我使用的SQLiteOpenHelper版本高达35,这是导致此问题的原因吗?