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();
相关推荐
mygljx1 分钟前
【MySQL 的 ONLY_FULL_GROUP_BY 模式】
android·数据库·mysql
Andya_net8 分钟前
Spring | @EventListener事件机制深度解析
java·后端·spring
lang2015092821 分钟前
18 Byte Buddy 进阶指南:解锁 `@Pipe` 注解,实现灵活的方法转发
java·byte buddy
重庆小透明24 分钟前
【java基础篇】详解BigDecimal
java·开发语言
杰克尼1 小时前
苍穹外卖--day08
java·数据库·spring boot·mybatis·notepad++
lierenvip2 小时前
SQL 建表语句详解
java·数据库·sql
kuntli2 小时前
Spring Bean生命周期全解析
java
ok_hahaha2 小时前
java从头开始-苍穹外卖-day06-微信小程序开发-微信登录和商品浏览
java·微信·微信小程序·小程序
Java面试题总结2 小时前
Spring @Validated失效?原因、排查与高效解决方案全解析
java·spring boot·spring
冬奇Lab2 小时前
AudioTrack音频播放流程深度解析
android·音视频开发·源码阅读