【发布时间】:2021-12-11 13:27:54
【问题描述】:
如果在迁移策略设置为“回退到破坏性迁移”时更改数据库的内容,是否应该增加Room数据库版本的值?
对数据库进行更改后:
- 删除了一些列。
- 在存储在资产中的数据库文件中更新了某些行的内容。
【问题讨论】:
标签: android android-room
如果在迁移策略设置为“回退到破坏性迁移”时更改数据库的内容,是否应该增加Room数据库版本的值?
对数据库进行更改后:
【问题讨论】:
标签: android android-room
是的。即使回退到破坏性迁移策略,您也应该更新数据库的版本。 Room 使用“身份哈希字符串”唯一标识每个数据库版本,该字符串保存在配置表中。
保持数据库版本不变将导致应用崩溃并出现 IllegalStateException。 Room 在内部检查数据库的身份,将当前版本的身份哈希与存储在名为“room_master_table”的表中的身份哈希进行比较。
您可以在下面的文章中了解更多信息,该文章还详细解释了如何处理版本更改和测试。
参考:https://medium.com/androiddevelopers/understanding-migrations-with-room-f01e04b07929
【讨论】:
更新:有趣的是,该应用程序在某些用户中崩溃了,但对于包括我在内的某些用户来说,它并没有崩溃。所以最好更新数据库的版本,即使它的迁移策略是回退到破坏性的。
根据我的经验,当迁移策略设置为“回退到破坏性迁移”时,似乎我们不必增加 Room 数据库版本的值。
我更改了数据库的内容并从数据库文件中删除了一些列。
然后我安装了以前版本的应用程序(未更改的数据库)。然后我使用该应用程序并确保创建了一个数据库实例。
然后我安装了新版本的应用程序(更改了数据库)。它没有崩溃,一切正常。应用于数据库的更改。
【讨论】: