过去一年,我们一直在使用Realm,我们最近将应用程序从 V6.1.0升级到了V7.0.0 ,此次升级后我们看到了提到的崩溃,我们正在使用 Kotlin 用于使用 Realm Java 进行应用程序开发,最后,我们启用了数据库加密
java.lang.RuntimeException: Unable to create application com.myapp.Application: io.realm.exceptions.RealmFileException: Opening Realm files of format version 0 is not supported by this version of Realm (Database has an unsupported version and cannot be upgraded
Exception backtrace:
(/data/data/com.myapp.Application:/files/myapp.realm) in /Users/cm/Realm/realm-java-release/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp line 107 Kind: FORMAT_UPGRADE_REQUIRED.
at io.realm.internal.OsSharedRealm.nativeGetSharedRealm(Native Method)
at io.realm.internal.OsSharedRealm.(OsSharedRealm.java:175)
at io.realm.internal.OsSharedRealm.getInstance(OsSharedRealm.java:251)
at io.realm.BaseRealm.(BaseRealm.java:137)
at io.realm.BaseRealm.(BaseRealm.java:104)
at io.realm.Realm.(Realm.java:163)
at io.realm.Realm.createInstance(Realm.java:499)
at io.realm.RealmCache.createInstance(RealmCache.java:507)
at io.realm.RealmCache.doCreateRealmOrGetFromCache(RealmCache.java:473)
at io.realm.RealmCache.createRealmOrGetFromCache(RealmCache.java:414)
at io.realm.Realm.getDefaultInstance(Realm.java:407)```
答案 0 :(得分:0)
7.0.o仍在测试版中,我相信他们会在稳定的时候增加对迁移的支持。 另外,我也不建议将其用于beta阶段的生产。
答案 1 :(得分:0)
在我更新Realm版本之后,这对我来说是一个迁移问题。删除迁移块内的所有旧RealmModels将无济于事。在这种情况下,需要删除整个Realm数据库。
在iOS上,在Realm配置期间,存在属性deleteRealmIfMigrationNeeded
。通过将其设置为true
可以解决我的问题。
据我了解,对于Java,只需要简单地调用函数.deleteRealmIfMigrationNeeded()
。与此类似:
Realm.init(this);
realmConfiguration = new RealmConfiguration.Builder()
.schemaVersion(BuildConfig.REALM_SCHEMA_VERSION)
.migration((realm, oldVersion, newVersion) -> RealmAutoMigration.migrate(realm))
.deleteRealmIfMigrationNeeded()
.build();
Realm.setDefaultConfiguration(realmConfiguration);