ошибка миграции области "Добавлено свойство 'x'" - PullRequest
0 голосов
/ 04 июля 2018

я не могу использовать область миграции

в моем проекте вам нужно настроить миграцию области. Я создал класс миграции, добавил миграцию и добавил поле в realmObject, но миграция не работает

я получаю это сообщение об ошибке:

Миграция требуется из-за следующих ошибок:

  • Добавлено свойство 'PickupState.latitude'.
  • Добавлено свойство 'PickupState.longitude'.

старая модель 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;
  }
}

новый 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;
  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;
  }
}

класс миграции:

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++;
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Я сделал две таблицы и две разные схемы. Но я изменил одну версию и миграцию Теперь я изменил две версии, и у меня для них одинаковая миграция

Я должен использовать модуль для каждой таблицы, но я этого не делал

0 голосов
/ 04 июля 2018

Чтобы выполнить миграцию, вам также нужно изменить версию схемы.

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