RealmMigrationNeededException al cambiar el modelo de Realm

Cada vez que cambio el modelo como agregar más campos, la aplicación se bloquea con el error io.realm.exceptions.RealmMigrationNeededException. Esto solo se puede resolver cuando desinstale y vuelva a instalar la aplicación.

¿Alguna sugerencia para hacer la migración? Estoy usando sólo la instancia predeterminada.

Debe poder encontrar la información que necesita aquí:

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

Simplemente cambiar el código a la nueva definición funcionará bien, si no tiene datos almacenados en el disco en el esquema de base de datos antiguo. Pero si lo hace, habrá un desajuste entre lo que el Reino ve definido en el código y los datos que el Reino ve en el disco, por lo que se lanzará una excepción.

Si no tienes ningún problema en perder tus datos antiguos, puedes eliminar la configuración del reino y crear uno nuevo.

Realm realm = null; try { realm = Realm.getInstance(MainActivity.this); } catch (RealmMigrationNeededException r) { Realm.deleteRealmFile(MainActivity.this); realm = Realm.getInstance(MainActivity.this); } 

O

 RealmConfiguration config2 = new RealmConfiguration.Builder(this) .name("default2") .schemaVersion(3) .deleteRealmIfMigrationNeeded() .build(); realm = Realm.getInstance(config2); 

Usted tiene que hacer la Migration si usted no quiere perder sus datos por favor vea este ejemplo aquí .

Realm migraciones en 0.84.2 se han cambiado un poco, los puntos clave en la creación de un reino (0.84.2) la migración de trabajo para mí fueron la comprensión de que:

  • La schemaVersion siempre es 0 cuando la aplicación tiene un db de dominio sin especificar schemaVersion. Lo que es cierto en la mayoría de los casos, ya que probablemente empiece a usar schemaVersion en la configuración una vez que necesite migraciones y ya está ejecutando una versión en vivo de su aplicación.

  • La schemaVersion se almacena automáticamente y cuando se produce una nueva instalación de su aplicación y ya está en schemaVersion 3, el reino verifica automáticamente si hay excepciones, si no, establece la schemaVersion en 3 para que sus migraciones no se ejecuten cuando no se necesitan. Esto también meens usted no tiene que almacenar nada más en SharedPreferences.

  • En la migración usted tiene que fijar todos los valores de nuevas columnas cuando el tipo no es anulable, …

  • Las cadenas vacías se pueden insertar pero sólo cuando se establece convertColumnToNullable en la columna

  • Cómo utilizar Realm asObservable con el operador concat () de RxJava?
  • Realm Encontrar consultas Resultado en objetos vacíos
  • Java Realm obtiene el último elemento insertado
  • Desvincular RealmObject de Realm
  • El objeto no es parte del esquema para este reino
  • Actualización / cambio de la clave de cifrado de Realm
  • Cómo hacer una copia de seguridad de Realm DB en Android antes de eliminar el archivo Realm. ¿Hay alguna manera de restaurar el archivo de copia de seguridad?
  • Android Realm copyToRealmOrUpdate crea duplicados de objetos anidados
  • No puede compilar la aplicación de Android con el reino
  • ¿Los modelos Realm realmente requieren getters y setters?
  • Acceso al dominio desde un subproceso incorrecto
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.