在android中我有领域版本0.86。我试图升级到1.1.1,但之后它抛出一个错误,说我需要一个领域迁移。有谁知道如何从一个版本迁移到另一个版本?是否有更安全的版本我可以升级到更容易实现?感谢
答案 0 :(得分:0)
我们在此处提供了迁移示例,您可以使用它们来帮助您入门:https://github.com/realm/realm-java/blob/master/examples/migrationExample/src/main/java/io/realm/examples/realmmigrationexample/model/Migration.java
此处记录了一般的迁移:https://realm.io/docs/java/latest/#migrations
使用Realm作为网络请求缓存机制的用例的简单解决方案。只需将deleteRealmIfMigrationNeeded()
添加到您的RealmConfiguration:https://realm.io/docs/java/latest/api/io/realm/RealmConfiguration.Builder.html#deleteRealmIfMigrationNeeded--
答案 1 :(得分:0)
当您从任何旧版本将Realm DB升级到更新版本1.0.0+时,请执行此操作 如果我们默认运行应用程序,那么我们会收到迁移错误。但是,通过使用如下定义的迁移,我们可以解决这个问题。
在Application类中定义Realm app实例,如下所示:
public class MainApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Fabric.with(this, new Crashlytics());
VolleyHelper.init(this);
// The Realm file will be located in Context.getFilesDir() with name "default.realm"
RealmConfiguration config = new RealmConfiguration.Builder(this)
.schemaVersion(1)
.migration(new MyMigration())
.build();
Realm.setDefaultConfiguration(config);
}}
如果您没有对数据库结构进行任何更改,只升级Realm版本,则按以下方式定义Migration类。如果您进行任何数据库结构更改,则必须在MyMigration类下定义它。您可以从此处获取更多迁移信息Realm Migration
public class MyMigration implements RealmMigration {
@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
}}
答案 2 :(得分:0)
其他人已将示例迁移与the docs相关联,因此我们只是告诉您,您已经遇到了breaking change in 0.89.0
@PrimaryKey field value can now be null for String, Byte, Short, Integer, and Long types.
Older Realms should be migrated, using RealmObjectSchema.setNullable(),
or by adding the @Required annotation. (#2515).
因此,如果您想在这种情况下避免使用迁移,则只需在@Required
字段中指定@PrimaryKey
。