gpt4 book ai didi

android - Realm 迁移问题

转载 作者:太空狗 更新时间:2023-10-29 16:32:33 25 4
gpt4 key购买 nike

我在让 Realm 成功迁移方面遇到了问题,现在已经修修补补了几个星期,需要一点帮助。

我有一个 Realm 数据库,我的意思是保存数据和返回数据。

假设我想添加一个新字段“用户名”。我更新我的 RealmObject 代码以利用新字段。然后在我的 App.java 中使用:

   System.out.println("Configuring Realm...");
RealmConfiguration config1 = new RealmConfiguration.Builder(this)
.schemaVersion(1)
.migration(new Migration())
.build();
realm = Realm.getInstance(config1);
realm.close();

我的 Migration.java 看起来像:

public class Migration implements RealmMigration {
@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
RealmSchema schema = realm.getSchema();
RealmObjectSchema theSchema = schema.get("RealmStore");
System.out.println("Realm version is " + oldVersion);
if (oldVersion == 0) {
theSchema
.addField("username", String.class);
oldVersion++;
System.out.println("Realm migrated from 0 to 1");
}
}
}

我运行应用程序并给出以下输出:

I/System.out: Configuring Realm...
I/System.out: Realm version is 0
I/System.out: Realm migrated from 0 to 1

一切顺利!除了..!当您重新运行该应用程序时,您现在会收到以下错误:

E/AndroidRuntime: FATAL EXCEPTION: main
E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.rh.realmy/com.rh.realmy.Main}: java.lang.IllegalArgumentException: Realm on disk is newer than the one specified: v1 vs. v0

有什么想法吗?

最佳答案

问题是在代码的其他部分您正在调用 Realm.getInstance(context)

这等同于执行以下操作:

RealmConfiguration config = new RealmConfiguration.Builder(context).schemaVersion(0).build();
Realm realm = Realm.getInstance(config);

这会给您带来您所看到的架构不匹配错误。

您可以在此处阅读有关默认配置的更多信息:https://realm.io/docs/java/latest/#the-default-realm

关于android - Realm 迁移问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35187538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com