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

Realm新增productsList字段触发MigrationNeededException如何解决

修复方案

核心问题

你新增了FuelStationBean的productsList字段后,仅升级了schema版本,没有在迁移类中补充对应字段的添加逻辑,且RealmList<String>属于特殊集合类型,需要用Realm专门的API添加。

步骤1:修改RealmMigration迁移类

补充版本1升级到版本2的迁移逻辑,代码如下:

public class RealmMigration implements io.realm.RealmMigration {
    @Override
    public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
        RealmSchema schema = realm.getSchema();

        if (oldVersion == 0) {
            schema.get("FuelStationBean")
                    .addField("ladestation", boolean.class)
                    .addField("ladepunkt", String.class);
            oldVersion++;
        }
        // 新增版本1升2的逻辑,添加productsList字段
        if (oldVersion == 1) {
            schema.get("FuelStationBean")
                    .addRealmListField("productsList", String.class);
            oldVersion++;
        }
    }
}

步骤2:确认Realm初始化配置的schema版本

将initRealm方法中的schemaVersion设置为2,和迁移逻辑的最终版本对齐:

RealmConfiguration config = new RealmConfiguration.Builder()
        .schemaVersion(2) 
        .migration(new RealmMigration()) 
        // 注意:仅开发测试阶段可加下面这行避免迁移报错,上线版本必须删除,否则会清空用户所有Realm数据
        // .deleteRealmIfMigrationNeeded()
        .build();

注意事项

  • 上线版本严禁使用deleteRealmIfMigrationNeeded配置,会丢失所有用户本地存储的Realm数据
  • 如果修改后仍有报错,先卸载测试设备上的旧版本应用再重新安装测试,避免本地缓存的旧版本Realm文件干扰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:15:02