android - "realm migration needed",从 Realm 数据库中检索值时 android 出现异常

标签 android realm

我在我的应用程序中使用 Realm 作为后端。我创建了一个名为 Setting 的表。我按照 Realm 官方网站上给出的步骤在该表中添加了值。 但是当我要从该表中检索值时,出现异常

"io.realm.exceptions.RealmMigrationNeededException: RealmMigration must be provided" on the line:" realm=Realm.getInstance(getApplicationContext());".

实际上,我是android和Realm的新手,所以找麻烦了解问题所在。

最佳答案

EDIT: for new versions of Realm, Realm.init(Context context) is added

Realm.init(context);    
RealmConfiguration config = new RealmConfiguration
                                     .Builder()
                                     .deleteRealmIfMigrationNeeded()
                                     .build();

注意:使用此配置选项,任何架构更改都将导致数据丢失,具体而言:

  • 添加/删除字段
  • 添加了一个新的 RealmObject 类
  • 删除现有的 RealmObject
  • @Required 添加/删除
  • @PrimaryKey 添加/删除
  • @Index 添加/删除

因此主要推荐在应用处于开发阶段时使用。


或者按照官方文档添加迁移:

https://realm.io/docs/java/latest/#migrations

例如,

public class Migration implements RealmMigration {
    @Override
    public void migrate(final DynamicRealm realm, long oldVersion, long newVersion) {
        RealmSchema schema = realm.getSchema();

        if (oldVersion == 0) {
            RealmObjectSchema personSchema = schema.get("Person");
            personSchema
                .addField("fullName", String.class, FieldAttribute.REQUIRED);
            oldVersion++;
            ... 

  // hash code, equals 

Realm.init(context);    
RealmConfiguration config = new RealmConfiguration.Builder() 
                                 .migration(new Migration()) 
                           //      .deleteRealmIfMigrationNeeded()
                                 .build();

关于android - "realm migration needed",从 Realm 数据库中检索值时 android 出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41949711/

相关文章:

java - 当我的应用程序处于后台时如何显示通知?

java - 通过 WebView (Android Studio) 导航到应用程序时,Youtube 会在应用程序中启动

android - 从 AsyncTask 更新 Activity 中的进度对话框

ios - 类型不匹配(Swift.Dictionary<Swift.String, Any> debugDescription : "Expected to decode Dictionary<String, Any> but found an array instead."

swift - 我们如何在 UITableView 中从本地 Realm 检索数据?

android - 带有 RecyclerView 的 TableLayout

滚动顶部时Android RecyclerView StaggeredGrid项目改变位置

java - 如何更新 Realm Android 中的子对象

swift - RxSwift 和控制流 - 一个坏主意?

ios - Realm 列表属性不保存数据