Android Room迁移在不丢失数据的情况下更改列数据类型
我有一个名为Android Room迁移在不丢失数据的情况下更改列数据类型,android,kotlin,database-migration,android-room,Android,Kotlin,Database Migration,Android Room,我有一个名为tag(TEXT)的表列,它将更改为tags(TEXT) 实体将从String更改为List 我已经为列编写了一个转换器,它使用Gson()转换列表 如何为此查询编写迁移? 我曾尝试创建一个临时表,然后插入值,但无法将标记转换为数组。 此外,标记可以为空 private val migration_2_3: Migration = object : Migration(2, 3) { override fun migrate(database: Support
tag
(TEXT)的表列,它将更改为tags
(TEXT)
实体将从String
更改为List
我已经为列编写了一个转换器,它使用Gson()转换列表
如何为此查询编写迁移?
我曾尝试创建一个临时表,然后插入值,但无法将标记转换为数组。
此外,标记可以为空
private val migration_2_3: Migration = object : Migration(2, 3) {
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("CREATE TABLE IF NOT EXISTS `TempEntity` (`id` TEXT NOT NULL, `tags` TEXT, PRIMARY KEY(`id`))")
database.execSQL("INSERT INTO `TempEntity` (`id`, `topicIds`,) SELECT `id`, arrayOf('\"[', topicId, ']\"') FROM Entity")
database.execSQL("DROP TABLE Entity")
database.execSQL("ALTER TABLE TempEntity RENAME TO Entity")
}
}