【问题标题】:Should I increment the value of Room database version when migration strategy is fallback to destructive?当迁移策略回退到破坏性时,我应该增加 Room 数据库版本的值吗?
【发布时间】:2021-12-11 13:27:54
【问题描述】:

如果在迁移策略设置为“回退到破坏性迁移”时更改数据库的内容,是否应该增加Room数据库版本的值?

对数据库进行更改后:

  1. 删除了一些列。
  2. 在存储在资产中的数据库文件中更新了某些行的内容。

【问题讨论】:

    标签: android android-room


    【解决方案1】:

    是的。即使回退到破坏性迁移策略,您也应该更新数据库的版本。 Room 使用“身份哈希字符串”唯一标识每个数据库版本,该字符串保存在配置表中。

    保持数据库版本不变将导致应用崩溃并出现 IllegalStateException。 Room 在内部检查数据库的身份,将当前版本的身份哈希与存储在名为“room_master_table”的表中的身份哈希进行比较。

    您可以在下面的文章中了解更多信息,该文章还详细解释了如何处理版本更改和测试。

    参考:https://medium.com/androiddevelopers/understanding-migrations-with-room-f01e04b07929

    【讨论】:

      【解决方案2】:

      更新:有趣的是,该应用程序在某些用户中崩溃了,但对于包括我在内的某些用户来说,它并没有崩溃。所以最好更新数据库的版本,即使它的迁移策略是回退到破坏性的。

      根据我的经验,当迁移策略设置为“回退到破坏性迁移”时,似乎我们不必增加 Room 数据库版本的值

      我更改了数据库的内容并从数据库文件中删除了一些列。

      然后我安装了以前版本的应用程序(未更改的数据库)。然后我使用该应用程序并确保创建了一个数据库实例。

      然后我安装了新版本的应用程序(更改了数据库)。它没有崩溃,一切正常。应用于数据库的更改。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-04-01
        • 1970-01-01
        • 2014-02-19
        • 1970-01-01
        • 2019-08-27
        • 2017-03-03
        • 2020-03-17
        相关资源
        最近更新 更多