You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Room fallbackToDestructiveMigrationFrom 无法正常工作如何解决

报错原因

两个报错均为配置不符合Room的校验规则导致:

  • 传入22到fallbackToDestructiveMigrationFrom时触发冲突:当前注册的FROM_21_TO_22迁移的结束版本为22,Room不允许同一个版本号同时作为手动迁移的起止版本、和破坏性迁移的起始版本,会直接判定配置矛盾。
  • 传入23到fallbackToDestructiveMigrationFrom时提示找不到迁移:fallbackToDestructiveMigrationFrom接收的参数是触发破坏性迁移的旧数据库版本号,传23意味着只有设备上的数据库版本为23、往更高版本升级时才走破坏性迁移。当前目标版本就是23,设备上旧版本为22,自然找不到对应迁移路径。
实现方案

你需要22升级到23时清空全量数据重建表,本质上所有低于23的版本升级到23时,旧数据都不需要保留——毕竟就算先把旧版本数据迁到22,升23时也会被全量删除,之前的迁移逻辑完全是无效运行,直接按以下步骤配置即可:

  1. 清空addMigrations中传入的所有旧迁移对象,移除原来从FROM_14_TO_15到FROM_21_TO_22的所有配置
  2. 增加破坏性迁移配置,指定所有低于23的版本升级时走删库重建逻辑:
// 其余Room数据库配置保持不变
.addMigrations()
.fallbackToDestructiveMigrationFrom(14,15,16,17,18,19,20,21,22)
  1. 确认@Database注解的version属性已设置为23

配置完成后,所有设备上数据库版本低于23的用户升级时,都会直接清空原有表结构和数据,自动加载版本23对应的最新表结构,不会再抛出迁移相关报错。

  • 后续升级更高数据库版本(如24)时,正常添加对应版本的手动迁移即可,不会影响本次22->23的破坏性迁移逻辑。

内容的提问来源于stack exchange,提问作者AndreiBogdan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:24:17