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