领域迁移错误 "Property 'x' has been added"

realm migration error "Property 'x' has been added"

我无法使用迁移领域

在我的项目中,需要配置realm的迁移。我创建了一个迁移 class,我添加了迁移并向 realmObject 添加了字段,但是迁移不起作用

我收到此错误消息:

由于以下错误需要迁移:

旧的 realmObject 模型

public class PickupState extends RealmObject {
  @PrimaryKey
  private long autoIncrementId;
  private long id;
  private String userName;
  private String eventType;
  private String eventData;
  private String syncStatus;
  private String syncErrorCode;

  public void setAutoIncrementId(long l) {
    autoIncrementId = l;
  }

  public long getAutoIncrementId() {
    return autoIncrementId;
  }

  public long getId() {
    return id;
  }

  public void setId(long id) {
    this.id = id;
  }

  public String getUserName() {
    return userName;
  }

  public void setUserName(String userName) {
    this.userName = userName;
  }

  public String getEventType() {
    return eventType;
  }

  public void setEventType(State eventType) {
    this.eventType = eventType.name();
  }

  public String getEventData() {
    return eventData;
  }

  public void setEventData(String eventData) {
    this.eventData = eventData;
  }

  public String getSyncStatus() {
    return syncStatus;
  }

  public void setSyncStatus(String syncStatus) {
    this.syncStatus = syncStatus;
  }

  public String getSyncErrorCode() {
    return syncErrorCode;
  }

  public void setSyncErrorCode(String syncErrorCode) {
    this.syncErrorCode = syncErrorCode;
  }
}

新领域对象

public class PickupState extends RealmObject {
  @PrimaryKey
  private long autoIncrementId;
  private long id;
  private String userName;
  private String eventType;
  private String eventData;
  private String syncStatus;
  private String syncErrorCode;
  private double latitude;
  private double longitude;

  public void setAutoIncrementId(long l) {
    autoIncrementId = l;
  }

  public long getAutoIncrementId() {
    return autoIncrementId;
  }

  public long getId() {
    return id;
  }

  public void setId(long id) {
    this.id = id;
  }

  public String getUserName() {
    return userName;
  }

  public void setUserName(String userName) {
    this.userName = userName;
  }

  public String getEventType() {
    return eventType;
  }

  public void setEventType(State eventType) {
    this.eventType = eventType.name();
  }

  public String getEventData() {
    return eventData;
  }

  public void setEventData(String eventData) {
    this.eventData = eventData;
  }

  public String getSyncStatus() {
    return syncStatus;
  }

  public void setSyncStatus(String syncStatus) {
    this.syncStatus = syncStatus;
  }

  public String getSyncErrorCode() {
    return syncErrorCode;
  }

  public void setSyncErrorCode(String syncErrorCode) {
    this.syncErrorCode = syncErrorCode;
  }

  public double getLatitude() {
    return latitude;
  }

  public void setLatitude(double latitude) {
   this.latitude = latitude;
    }

   public double getLongitude() {
    return longitude;
  }

   public void setLongitude(double longitude) {
   this.longitude = longitude;
  }
}

迁移class:

public class PickupStateMigration implements RealmMigration {

  @Override
  public void migrate(@NonNull DynamicRealm realm, long oldVersion, long newVersion) {
    final RealmObjectSchema schema = realm.getSchema().get("PickupState");
    assert schema != null;
    if (oldVersion == 0) {
        schema.addField("latitude", double.class);
        schema.addField("longitude", double.class);
      oldVersion++;
    }
  }
}

要执行迁移,您还需要提升架构版本。

RealmConfiguration config = new RealmConfiguration.Builder()
                                    .schemaVersion(1)
                                    .migration(new PickupStateMigration())
                                    // ...
                                    .build()

我制作了两个table和两个不同的schemaVersion 但是我改变了一个版本并迁移 现在我已经更改了两个版本并且对它们进行了相同的迁移

我必须为每个 table 使用模块,但我没有这样做