簡體   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