使用新的realmconfiguration打开领域

时间:2016-04-28 06:34:05

标签: android realm

我在我的机器人中使用Realm,直到现在  new RealmConfiguration.Builder(this) .build();

我稍后会阅读有关添加架构和迁移的可能性。 所以在我的应用程序的新版本中,我想添加迁移功能。 所以我将上面的行改为:

new RealmConfiguration.Builder(this) .schemaVersion(0) .migration(new Migration()) .build();

但现在我收到了错误

IllegalArgumentException: Configurations cannot be different if used to open the same file. 

如何在不删除数据库的情况下更改配置

2 个答案:

答案 0 :(得分:24)

我认为您的问题是您多次创建RealmConfiguration。这本身不应该是一个问题(尽管效率很低),但问题出现在你的Migration类中。在内部我们比较配置对象中的所有状态,如果你没有覆盖equals类中的hashCodeMigration,那么你会遇到new Migration().equals(new Migration()) == false会给出public class Migration implements RealmMigration { // Migration logic... @Override public int hashCode() { return 37; } @Override public boolean equals(Object o) { return (o instanceof Migration); } } 的情况你看到的错误。

一种解决方案是添加:

DBStuff

答案 1 :(得分:0)

使用schemaVersion()设置新架构版本时,版本号应等于或高于现有realm文件的架构版本。您提供的RealmMigration()应该能够将旧版本的模式转换为新版本。

我建议先检查您现有的架构版本,然后检查您的RealmObject是否有适当的转化。