房间自动迁移显示编译时错误

Mas*_*sum 9 android android-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
}
Run Code Online (Sandbox Code Playgroud)

Ser*_*aró 5

就我而言,我在进行更改和编译后更改了数据库版本。这修改了旧版本 ( 2.json) 的生成架构,因此新版本仍会与错误的旧版本进行比较。

花了一些时间我才注意到这一点,因此回滚旧模式上的更改修复了它。这是假设您使用某种版本控制。如果没有它,您应该首先构建应用程序,而不对数据模型进行更改。然后提高数据库版本并应用更改(添加/删除列等)。


cd1*_*cd1 3

房间自动迁移需要您导出数据库架构,以便它可以知道您的数据库在之前版本中的情况,以便生成自动迁移。这是在 Medium 上的一篇帖子中声明的Florina Muntenescu

\n
\n

\xe2\x9a\xa0\xef\xb8\x8f注意:在幕后,Room 自动迁移依赖于生成的\n数据库架构,因此在使用 autoMigrations 时,请确保\n@Database 中的 exportSchema 选项为 true。否则会导致\n错误:导出架构关闭时无法创建自动迁移。

\n
\n

这个答案显示了如何添加选项exportSchema正确添加到您的项目中。

\n