Я хочу добавить две таблицы без потери данных из старых таблиц. Итак, я создал таблицу "Emotion"
public class Emotion extends RealmObject {
private String uuid;
private String name;
и EmotionValue
public class EmotionValue extends RealmObject {
private String uuid;
private String emotionId;
private String name;
Мой RealmMigrations
имеет этот код
public class RealmMigrations implements RealmMigration {
@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
final RealmSchema schema = realm.getSchema();
...
if(oldVersion == 5) {
schema.create("Emotion")
.addField("uuid", String.class)
.addField("name", String.class);
schema.create("EmotionValue")
.addField("uuid", String.class)
.addField("emotionId", String.class)
.addField("name", String.class);
oldVersion++;
}
, а мой App
имеет
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
Realm.init(getApplicationContext());
RealmConfiguration config = getRealmConfig("superdatabase");
Realm.setDefaultConfiguration(config);
Stetho.initialize(
Stetho.newInitializerBuilder(this)
.enableDumpapp(Stetho.defaultDumperPluginsProvider(this))
.enableWebKitInspector(RealmInspectorModulesProvider.builder(this).build())
.build());
}
public static RealmConfiguration getRealmConfig(String name) {
return new RealmConfiguration.Builder()
.name(name)
.schemaVersion(5)
.migration(new RealmMigrations())
.build();
}
}
при запуске приложения появляется ошибка:
Caused by: io.realm.exceptions.RealmMigrationNeededException: Migration is required due to the following errors:
- Class 'Emotion' has been added.
- Class 'EmotionValue' has been added.
at io.realm.internal.OsSharedRealm.nativeGetSharedRealm(Native Method)
at io.realm.internal.OsSharedRealm.<init>(OsSharedRealm.java:171)
at io.realm.internal.OsSharedRealm.getInstance(OsSharedRealm.java:241)
at io.realm.BaseRealm.<init>(BaseRealm.java:135)
at io.realm.BaseRealm.<init>(BaseRealm.java:103)
at io.realm.Realm.<init>(Realm.java:163)
at io.realm.Realm.createInstance(Realm.java:499)
at io.realm.RealmCache.doCreateRealmOrGetFromCache(RealmCache.java:341)
at io.realm.RealmCache.createRealmOrGetFromCache(RealmCache.java:284)
at io.realm.Realm.getInstance(Realm.java:428)
at com.timecontrolapp.models.App.onCreate(App.java:17)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1012)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4553)
в com.timecontrolapp.models.App.onCreate (App. java: 17) содержит эту строку Realm.setDefaultConfiguration(config);
. У меня вопрос, как я могу добавить несколько таблиц в свою существующую базу данных, не теряя данных из старой базы данных?