通过重新创建模式将 Realm 迁移到特定版本的数据库
Migrating Realm with the re-creation of the schema to a specific version of the database
在我的应用中数据库11之前的版本,用户没有输入数据。所以我不需要迁移。我用了.deleteRealmIfMigrationNeeded()
。从版本 11 开始,用户可以输入数据。现在我需要使用迁移。在 11 版本之前,我需要重新创建架构,但同时,从 11 版本开始,我需要保存用户数据。如何在我的自定义迁移中执行此操作 class?
此外,我的应用程序使用了加密。我在应用程序启动时在服务器上授权应用程序时获得密钥。数据库的名字也是根据这个key形成的
在您的情况下,您需要做的是删除早于版本 11 的 Realm 文件,否则根据需要处理您的迁移。
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
在我的应用中数据库11之前的版本,用户没有输入数据。所以我不需要迁移。我用了.deleteRealmIfMigrationNeeded()
。从版本 11 开始,用户可以输入数据。现在我需要使用迁移。在 11 版本之前,我需要重新创建架构,但同时,从 11 版本开始,我需要保存用户数据。如何在我的自定义迁移中执行此操作 class?
此外,我的应用程序使用了加密。我在应用程序启动时在服务器上授权应用程序时获得密钥。数据库的名字也是根据这个key形成的
在您的情况下,您需要做的是删除早于版本 11 的 Realm 文件,否则根据需要处理您的迁移。
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