每当我像添加更多字段一样更改模型时,应用程序会因io.realm.exceptions.RealmMigrationNeededException错误而崩溃。只有在我卸载并重新安装应用程序时才能解决此问题。
有关迁移的任何建议吗?我只使用默认实例。
答案 0 :(得分:10)
您应该可以在这里找到所需的信息:
https://realm.io/docs/java/latest/#migrations
如果您将代码更改为新定义,则可以正常工作 没有数据存储在旧数据库模式下的磁盘上。但如果你 实际上,Realm认为在代码和定义中定义的不匹配。 Realm在磁盘上看到的数据,因此会抛出异常。
答案 1 :(得分:2)
0.84.2中的领域迁移发生了很大的变化,让我(0.84.2)迁移工作的关键点是理解:
当您的应用具有不带的域数据库时,schemaVersion始终为0 指定schemaVersion。大多数情况下都是如此 一旦你开始在配置中开始使用schemaVersion 需要迁移&已经在运行您应用的实时版本。
schemaVersion会自动存储,当你的应用程序全新安装时,你已经在schemaVersion 3,realm 自动检查是否有异常,如果没有则设置 schemaVersion为3,因此您的迁移在不需要时不会运行。 这也意味着你不再需要存储任何东西了 SharedPreferences。
在迁移中,当类型不可为空时,您必须设置新列的所有值,...
只能在列上设置convertColumnToNullable时插入空字符串