迁移和Realm数据库版本

时间:2017-05-10 18:13:05

标签: android realm database-migration

我对王国的迁移有疑问。在捕获数据库版本0的应用程序中,在更新完成后,一切都很顺利,但是,当完成应用程序的干净安装时,它会在重新打开时出现问题,因为它尝试执行迁移到1。处理这些案件的正确方法是什么?如何设置版本?

1 个答案:

答案 0 :(得分:0)

在迁移课程中,您需要先验证oldVersion,然后才在真正需要的情况下继续迁移。

// Example migration adding a new class
RealmMigration migration = new RealmMigration() {
  @Override
  public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {

     // DynamicRealm exposes an editable schema
     RealmSchema schema = realm.getSchema();

     // Migrate to version 1
     if (oldVersion == 0) {
        schema.create("Person")
            .addField("name", String.class)
            .addField("age", int.class);
        oldVersion++;
     }

     // Migrate to version 2: Add a primary key + object references
     // Example:
     if (oldVersion == 1) {
        schema.get("Person")
            .addField("id", long.class, FieldAttribute.PRIMARY_KEY)
            .addRealmObjectField("favoriteDog", schema.get("Dog"))
            .addRealmListField("dogs", schema.get("Dog"));
        oldVersion++;
     }
  }
}

Realm Migration example