领域迁移错误 "Property 'x' has been added"
realm migration error "Property 'x' has been added"
我无法使用迁移领域
在我的项目中,需要配置realm的迁移。我创建了一个迁移 class,我添加了迁移并向 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;
}
}
新领域对象
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 使用模块,但我没有这样做
我无法使用迁移领域
在我的项目中,需要配置realm的迁移。我创建了一个迁移 class,我添加了迁移并向 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;
}
}
新领域对象
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 使用模块,但我没有这样做