Migration on Realm 0.81.1

断了今生、忘了曾经 提交于 2019-12-07 04:06:38

问题


Got different exception after adding objects.

  • migration needed
  • class not found in scheme
  • version on disk is newer than requested

What is wrong?

1 - MainActivity.java

RealmConfiguration realmConfiguration =
            new RealmConfiguration.Builder(context)
            .build();
    Realm.setDefaultConfiguration(realmConfiguration);

    Realm realm = Realm.getDefaultInstance();

    realm.executeTransaction(new Realm.Transaction() {
        @Override
        public void execute(Realm realm) {
            RealmTestObjectOne testObjectOne = new RealmTestObjectOne();
            testObjectOne.setValue(value);
            realm.copyToRealmOrUpdate(testObjectOne);
        }
    });

2 - RealmTestObjectOne.java

public class RealmTestObjectOne extends RealmObject {
    @PrimaryKey
    private int key = 1;

    private String value;

    public RealmTestObjectOne() {
   }

    public int getKey() {
        return key;
    }

    public void setKey(int key) {
        this.key = key;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

3 - Build & run

4 - Add RealmTestObjectTwo.java Same as RealmTestObjectOne.java but different id

5 - Modify RealmConfiguration

RealmConfiguration realmConfiguration =
    new RealmConfiguration.Builder(context)
    .schemaVersion(2)
    .migration(new Migration())
    .build();

5 - Add Migration.java

public class Migration implements RealmMigration {
    @Override
    public long execute(Realm realm, long l) {
        l += 1;
        return l;
    }
}

SOLVED

Thanks to @geisshirt answer.

public class Migration implements RealmMigration {
@Override
public long execute(Realm realm, long version) {
    if (version == 0) {
        Table table = realm.getTable(RealmTestObjectTwo.class);
        table.addColumn(ColumnType.INTEGER, "key");
        table.addColumn(ColumnType.STRING, "value");
        table.setPrimaryKey("key");
        version += 1;
    }

    return version;
}
}

来源:https://stackoverflow.com/questions/31249440/migration-on-realm-0-81-1

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!