我想要做的迁移(境87.2)我以前做别人,但是这个人是不容易的,我不知道为什么境界迁移重复值
我previsoly Categoriy.class
private int code;
private String title;
private String category;
private int order;
private boolean visible;
新Category.class
@PrimaryKey @Index private String id;
private int code;
private String title;
private String category;
private int order;
private boolean visible;
,并在Migration.class
public class Migration....
int i = 0;
.....
if(oldVersion == 7) {
schema.get("Category").addField("id", String.class, FieldAttribute.PRIMARY_KEY).transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.set("id", UtilsForAll.getRandomUUID()); //Get Random UUID for previsoly added categories
obj.set("order", i);
i++;
}
});
oldVersion++;
}
} //finishClass
对于一些愚蠢的原因,我不知道我在做什么错,它不断给我这个错误:
java.lang.IllegalArgumentException: Illegal Argument: Field "id" cannot be a primary key, it already contains duplicate values:
什么呢?在分类课上没有重复的值,我很确定。
PS:这只是发生在我真正使用的迁移,并已PREVIOSLY的类别记录
---------------------编辑22/03
试图以此为Emanuelez`s建议:
if(oldVersion == 7) {
schema.get("Category").addField("id", String.class);
schema.get("Category").transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.set("id", UtilsForAll.getRandomUUID()); //Get Random UUID for previsoly added categories
}
});
oldVersion++;
schema.get("Category").setPrimaryKey("id");
}
错误变成了这一个 -
io.realm.exceptions.RealmMigrationNeededException: Field 'id' does support null values in the existing Realm file. Remove @Required or @PrimaryKey from field 'id' or migrate using io.realm.internal.Table.convertColumnToNotNullable().
我ve tried
.setNullable(“ID”,真正的);`
什么都没有改变过
尝试了这3个步骤,没有什么改变,只是错误,我想即时通讯做与你指出的测试完全一样的东西=( – user2582318
任何更新?由于我仍然面临这个问题。 – AndoAiron