【问题标题】:Room Auto Migration showing compile time errorRoom Auto Migration 显示编译时错误
【发布时间】:2021-07-17 08:50:16
【问题描述】:

我正在使用 Room 2.4.0-alpha01

但它显示了这个错误

在以下路径中找不到迁移所需的架构:\app\schemascom.pigeon.mangaer.AppDB/2.json。无法生成自动迁移。

这是我的代码:

@Database(
    exportSchema = true,
    version = 3,
    entities = [Pigeon::class,PairEntity::class],
    autoMigrations = [
        AutoMigration(from = 2,to = 3)
                     ]
   )
abstract class AppDB:RoomDatabase() {
    abstract  fun  pigeonDao():PigeonDao
    abstract fun  pairDao():PairDao
}

【问题讨论】:

    标签: android android-room


    【解决方案1】:

    Room Auto-migration 需要您导出数据库架构,因此它可以知道您的数据库在以前的版本中的情况,以便生成自动迁移。这是由 Florina Muntenescu 声明的at a post on Medium

    ⚠️注意:在底层,Room 自动迁移依赖于生成的 数据库模式,因此请确保中的 exportSchema 选项 @Database 在使用 autoMigrations 时为真。否则会导致 错误:导出架构关闭时无法创建自动迁移。

    This answer 展示了如何将选项exportSchema 正确添加到您的项目中。

    【讨论】:

    • 这个错误的原因是我为版本 2 设置了 exportSchema = false
    • 没错,它缺少版本 2 的架构。如果您尚未提交版本 3 的更改,您仍然可以将该标志添加到版本 2,运行您的应用并生成版本的架构2,然后将您的更改添加到版本 3。如果这不可行,自动迁移将仅适用于从版本 3 到 4。
    猜你喜欢
    • 2021-10-25
    • 1970-01-01
    • 2017-07-23
    • 2012-07-29
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 2022-11-29
    • 2017-10-04
    相关资源
    最近更新 更多