Migration to the kingdom 0.81.1

It turned out another exception after adding objects.

  • migration required
  • class not found in schema
  • version on disk is newer than requested

What's 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 and Run

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

5 - Change 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; } } 

solvable

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; } } 
+5
source share

All Articles