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.
- Realm Exception 'value' no es un objeto gestionado válido
- ¿Tengo que cerrar el dominio en una base por hilo, o por uso / clase-base?
- Realm Auto Incremento campo ejemplo
- Cambiar el nombre de la tabla Realm
- ¿Cómo puedo crear una base de datos Realm con datos iniciales para mi aplicación android?
- Realm con datos pre-poblados en activos?
- Cómo crear un nuevo RealmObject que contiene una RealmList
- NoSuchMethodError cuando se utiliza realm.io en una biblioteca
- Error irrecuperable. Mremap (): Falló: Fuera de memoria en la línea 188 io_realm_internal_SharedGroup.cpp
- Clase de datos Kotlin de RealmObject
- Java Realm obtiene el último elemento insertado
- No puede compilar la aplicación de Android con el reino
- Tareas del grader del reino
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
- No se puede construir el proyecto cordova con éxito al ejecutar el comando debug de hormigas
- Cómo dibujar un mapa de bits con transparencia