Я новичок в android, и я использовал realm в своем APP, но я не указал схему, тогда, когда я хочу обновить приложение и реализовать миграцию.Android: Realm Migration Issue
Раньше я делал это,
Realm.init(getApplicationContext());
RealmConfiguration realmConfiguration =
new RealmConfiguration.Builder().build();
realm = Realm.getInstance(realmConfiguration);
И теперь,
Realm.init(getApplicationContext());
RealmConfiguration realmConfiguration =
new RealmConfiguration.Builder().schemaVersion(1).migration(new Migration()).build();
realm = Realm.getInstance(realmConfiguration);
И, я получаю эту ошибку.
java.lang.IllegalArgumentException: Configurations cannot be different if used to open the same file.
Cached configuration:
realmDirectory: /data/user/0/in.avanti_app.student_companion.debug/files
realmFileName : default.realm
canonicalPath: /data/data/in.avanti_app.student_companion.debug/files/default.realm
key: [length: 0]
schemaVersion: 1
migration: [email protected]
deleteRealmIfMigrationNeeded: false
durability: FULL
schemaMediator: [email protected]
New configuration:
realmDirectory: /data/user/0/in.avanti_app.student_companion.debug/files
realmFileName : default.realm
canonicalPath: /data/data/in.avanti_app.student_companion.debug/files/default.realm
key: [length: 0]
schemaVersion: 0
migration: null
deleteRealmIfMigrationNeeded: false
durability: FULL
schemaMediator: [email protected]
Я также переопределяю hasCode и равен в классе миграции.
'Я также переопределяю hasCode и равен в классе миграции.' Пожалуйста, покажите соответствующий код – EpicPandaForce
Хотя кажется, что у вас есть конфигурация с 'schemaVersion1' и' schemaVersion0'. – EpicPandaForce
@EpicPandaForce public class Migration реализует RealmMigration { Overirde public int hashCode() { return Migration.class.hashCode(); } Overirde public boolean equals (Object o) { return (o instanceof Migration); } Overirde общественного недействительными мигрирует (конечная DynamicRealm область, длинные oldVersion, длинные newVersion) {// миграция логика }} –