【问题标题】:When new table is added in room db from version 1 to version 2从版本 1 到版本 2 在房间 db 中添加新表时
【发布时间】:2023-04-08 22:56:01
【问题描述】:

我正在使用 android 发布的 Room Persistance 库作为 SQLite 数据库的替代品。

我目前在 Playstore 上有带有 SQLite 数据库的 Android 应用,在将应用从 SQLite 迁移到 Room 时,我遇到了几个错误。

第一

如果我创建新表,是否需要编写迁移脚本,即;每次升级房间版本都需要在Room中写迁移查询吗?

第二

我在 Playstore 上的 DB 版本为 20,当我将其升级到 21 时。我是否需要编写从 1 到 20 和 20 到 21 或仅从 20 到 21 的迁移脚本。

因为我不知道用户有什么app db版本(生产应用),可能是10,12,15。迁移脚本会怎样?

谢谢。

【问题讨论】:

    标签: android sqlite android-sqlite database-migration android-room


    【解决方案1】:
    1. 每次添加表(或进行任何架构更改)时,您都需要 a) 添加迁移或 b) 调用 .fallbackToDestructiveMigration() 仅当您不关心保留数据时。查看https://medium.com/google-developers/understanding-migrations-with-room-f01e04b07929 了解更多信息。

    2. 您需要为您的用户可能使用的每个数据库编写迁移脚本,以将它们升级到 21(同样,除非您不关心持久化数据,在这种情况下您可以使用 .fallbackToDestructiveMigration() )。上面的这个链接也应该解决这个问题。

    希望这会有所帮助!

    【讨论】:

    • 是的,这是正确的,但回退方法只会破坏我的所有数据,并且将创建新表......
    • 正确,所以另一个选项是肯定的,你必须为每个数据库编写脚本到 21
    猜你喜欢
    • 2021-11-13
    • 1970-01-01
    • 2021-10-03
    • 2022-08-23
    • 2018-04-27
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多