繁体   English   中英

Android 机房数据库迁移

[英]Android Room DB Migration

问题 - 执行强制更新 Play 商店更新时,Room DB 被擦除/清除。 我正在开发一个使用 Room DB 作为本地数据库的聊天信使应用程序。 每当我使用增加的数据库版本进行商店更新时,本地数据库都会被清除并且消息历史记录会丢失。

我正在使用房间数据库。 我的应用程序使用 Room DB 在 Play 商店中,版本为 4。

我的问题是我正在更改 9 个表架构,现在我更新了数据库版本,每个表架构都发生了变化。 我应该在这里增加数据库版本吗? 如何在不丢失用户数据的情况下使用 Room DB 在 Play 商店中强制更新来完成此操作? 前任。 DB 版本为 4,我更改了两个表的元素,如下面的查询。

当两个表被更改或更改为一个数字增量时,我是否需要将数据库版本增加两次? 示例:我需要 DB 将版本增加到 6 还是保持 5 就足够了?

private val mMigrationMessageStatus: Migration = object : Migration(4, 5) {
            override fun migrate(database: SupportSQLiteDatabase) {
                database.execSQL("ALTER TABLE message_status RENAME TO MessageStatus")
                database.execSQL("ALTER TABLE MessageStatus ADD COLUMN userId TEXT NOT NULL default ''")
            }
        }
 private val mMigrationGroupMember: Migration = object : Migration(4, 5) {
            override fun migrate(database: SupportSQLiteDatabase) {
                database.execSQL("ALTER TABLE group_member RENAME TO GroupMember")
                database.execSQL("ALTER TABLE GroupMember ADD COLUMN userId TEXT NOT NULL default ''")
            }
        }


return Room.databaseBuilder(context, AppDatabase::class.java, dbName)
                .allowMainThreadQueries()
                .addMigrations(mMigrationMessageStatus,mMigrationGroupMember)
                .build()

房间版本 2.4.0迁移非常容易,不会丢失数据

我回答了下面的链接。 看一下这个

房间迁移

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM