通过将模式重新创建到特定版本的数据库来迁移Realm

时间:2018-05-17 09:19:46

标签: java android realm realm-migration

在我的应用程序中的数据库11版本之前,用户没有输入数据。所以我不需要迁移。我用了.deleteRealmIfMigrationNeeded()。从版本11开始,用户可以输入数据。现在我需要使用迁移。在版本11之前,我需要重新创建架构,但同时,从版本11开始,我需要保存用户数据。如何在我的自定义迁移类中执行此操作?

此外,我的应用程序使用加密。当应用程序启动时在服务器上授权应用程序时,我得到密钥。数据库的名称也是在此密钥的基础上形成的。

1 个答案:

答案 0 :(得分:0)

您需要做的是删除Realm文件(如果它早于版本11),否则根据需要处理迁移。

RealmConfiguration realmConfiguration = new RealmConfiguration.Builder()
                                            .schemaVersion(11)
                                            .migration(new MyMigration())
                                            ./*...*/.build();
Realm.setDefaultConfiguration(realmConfiguration);
DynamicRealm dynamicRealm = DynamicRealm.getInstance(realmConfiguration);
long schemaVersion = dynamicRealm.getVersion();
dynamicRealm.close();
if(schemaVersion < 11) {
    Realm.deleteRealm(realmConfiguration);
}
Realm realm = Realm.getDefaultInstance(); // should work now