Android 开发 Room 数据库升级问题:A migration from 6 to 7 was required but not found.

  • 在 Android 开发中,使用 Room 时,出现如下错误信息

    java.lang.IllegalStateException:
    A migration from 6 to 7 was required but not found.
    Please provide the necessary Migration path via RoomDatabase.Builder.addMigration(Migration ...) or allow for destructive migrations via one of the RoomDatabase.Builder.fallbackToDestructiveMigration* methods.

    解读

    java.lang.IllegalStateException:
    需要从版本 6 到版本 7 的迁移策略,但未找到
    请通过 RoomDatabase.Builder.addMigration(Migration ...) 提供必要的迁移路径
    或者通过 RoomDatabase.Builder.fallbackToDestructiveMigration* 方法之一允许破坏性迁移

问题原因
  • 使用 Room 将数据库从版本 6 升级到版本 7,但没有提供对应的迁移策略
处理策略
  1. 通过 addMigration 方法提供必要的迁移策略(推荐)
java 复制代码
private static final Migration MIGRATION_6_7 = new Migration(6, 7) {

    @Override
    public void migrate(@NonNull SupportSQLiteDatabase database) {
        
        ...

    }
};
java 复制代码
MyDatabase myDatabase = Room.databaseBuilder(MyApplication.getContext(), MyDatabase.class, DATABASE_NAME)
        .addMigrations(MIGRATION_1_2)
        .addMigrations(MIGRATION_2_3)
        .addMigrations(MIGRATION_3_4)
        .addMigrations(MIGRATION_4_5)
        .addMigrations(MIGRATION_5_6)
        .addMigrations(MIGRATION_6_7)
        .build();
  1. 通过 fallbackToDestructiveMigration 方法允许破坏性迁移(不推荐)
java 复制代码
MyDatabase myDatabase = Room.databaseBuilder(MyApplication.getContext(), MyDatabase.class, DATABASE_NAME)
      .fallbackToDestructiveMigration()
      .build();
相关推荐
西峰u40 分钟前
Java单例模式|从基础到多线程安全
java·java单例模式
ClinicTech42 分钟前
实验室洗瓶机的清洗系统架构与自动化控制解析
java·python
linmengmeng_13141 小时前
【总结】MyBatis-Plus批量插入与清表的正确姿势
java·spring boot·mysql·mybatis
木井巳1 小时前
【记忆化搜索】不同路径
java·算法·leetcode·深度优先·剪枝·推荐算法
Sam_Deep_Thinking1 小时前
new Thread()之后发生了什么?
java·后端·面试·程序员
泡海椒1 小时前
规则引擎对比:JQuick-Java vs Drools 轻量场景选型对比
java·开发语言
惟恋惜1 小时前
第 3 章 · 列表、滚动与 Lazy 深入:告别 RecyclerView 思维
ui·android jetpack
wno7041 小时前
Spring Security短信验证码登录
java·python·spring
步行cgn1 小时前
Spring util 命名空间详解
java·后端·spring
古法安卓2 小时前
Android-休眠唤醒后onLocationChanged没有数据问题排查
android·java·android studio