我有一个领域数据库。
@PrimaryKey
private String id;
private String type;
private byte[] file;
与他们各自的吸气剂和制定者。
我试图通过以下命令向该数据库添加记录:
try {
loadRealm(); // Realm.init(context) and myRealm = Realm.getDefaultInstance()
myRealm.executeTransaction(realm -> {
SolicitationDatabase solicitationDatabase = myRealm.createObject(SolicitationDatabase.class, UUID.randomUUID().toString());
solicitationDatabase.setType(mMainVariables.getType());
solicitationDatabase.setFile(new byte[0]); //This should be empty, I'm only storing a file IF a file is found.
});
} finally {
if(myRealm != null) {
myRealm.close();
}
}
错误:
05-22 16:32:11.151 30366-30366/com.example.ga.realm3 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.ga.realm3, PID: 30366
io.realm.exceptions.RealmMigrationNeededException: Invalid type 'String' for field 'id' in existing Realm file.
at io.realm.SolicitationDatabaseRealmProxy.validateTable(SolicitationDatabaseRealmProxy.java:605)
at io.realm.DefaultRealmModuleMediator.validateTable(DefaultRealmModuleMediator.java:56)
答案 0 :(得分:1)
如果您处于开发阶段,则应向.deleteRealmIfMigrationNeeded()
添加RealmConfiguration
。一旦投入生产,您在修改模型类时将需要一个迁移步骤,以便用户在升级应用程序时不会丢失数据。
答案 1 :(得分:0)
错误是由于将id从int更改为String。
我在设备上卸载了应用程序,再次运行它并且有效。