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

  • Compruebe dos campos con la base de datos Realm
  • Reino añadiendo tamaño extra a mi apk
  • Implementar un formulario de consulta de unión en un db de dominio sin tener una relación predefinida en struture
  • El método findFirst () del dominio devuelve null
  • ¿Cómo comprobar el reino para la existencia de los datos del androide?
  • Uso de Realm.io para almacenar valores monetarios
  • Generar error con Realm
  • Realm Android - ¿Cómo puedo convertir RealmResults a una matriz de objetos?
  • ¿Manera apropiada de despejar la tabla / la base de datos del reino?
  • ¿Cuál es la mejor manera de usar List <String> en Realm Android?
  • Android Realm copyToRealmOrUpdate crea duplicados de objetos anidados
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.