Android Room Migration更改列数据类型而不会丢失数据

时间:2019-03-14 13:23:47

标签: android kotlin database-migration android-room

我有一个名为tag(TEXT)的表列,它将更改为tags(TEXT) 该实体将从String变为列表

我为该列编写了一个转换器,用于将列表转换为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")
        }
    }

0 个答案:

没有答案