【问题标题】:How do I supress a Room database schema change error?如何抑制 Room 数据库架构更改错误?
【发布时间】:2021-03-11 00:25:49
【问题描述】:

我只是在玩弄我的架构,因为我更改了架构/实体类,所以我根本无法加载我的应用程序。

我已经删除了我的测试设备上的应用程序,清除了 AndroidStudio 上的缓存,并重新启动了我的机器,但错误仍然存​​在。我所做的只是为我的 Room 数据库更改我的实体数据类之一的默认值。

如何在不增加版本号和提供迁移路径的情况下强制 AndroidStudio 忘记旧的表架构/实体类?

错误:

java.lang.IllegalStateException: Room cannot verify the data integrity. Looks like you've changed schema but forgot to update the version number. You can simply fix this by increasing the version number.

【问题讨论】:

    标签: android android-studio kotlin android-room dao


    【解决方案1】:

    Android Studio 不会保存数据库架构信息,但您的应用会保存。因此,您可以清除测试设备上的应用数据,并在不增加版本号的情况下解决问题。


    但是,如果您愿意丢失以前数据库的内容,则可以在不清除应用数据的情况下使用RoomDatabase.Builder.fallbackToDestructiveMigration() 并增加版本号以避免实施迁移逻辑。

    【讨论】:

    • 感谢您的回答,我已经解决了建议的增量和破坏性迁移方法。我仍然希望有一种方法可以清除 HelloRoom 应用程序的 Room 遗物。
    • 对不起,我看错了你的问题,编辑了我的答案
    【解决方案2】:

    您可以尝试在清单文件中将 android:allowBackup 设置为 false。

    【讨论】:

      【解决方案3】:

      您可以通过两种方式解决此问题。

      1. 通过在databaseBuilder 中调用fallbackToDestructiveMigration() 来允许破坏性迁移。

         Room.databaseBuilder(context, AppDatabase::class.java, DB_NAME)
             .fallbackToDestructiveMigration()
             .build()
        

      请注意,如果您使用此方法,您将丢失所有数据。

      1. 为避免丢失应用程序中的数据,您必须编写一些 SQL。不过,在开始之前,让我们看看如何向 Room 数据库添加迁移。

      假设我们有一个架构版本 1,我们将其增加到 2。那么我们的迁移将这样写:

      // Create a static val
      val MIGRATION_1_2 = object : Migration(1, 2) {
          override fun migrate(database: SupportSQLiteDatabase) {
          // database.execSQL(...)
          }
      }
      
      // Add the migration to your database builder
      Room.databaseBuilder(context, AppDatabase::class.java, DB_NAME)
          .addMigrations(MIGRATION_1_2)
          .build()
      

      更多:How to migrate Room database painlessly

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-03-02
        • 2023-03-31
        • 2014-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多