无效的类型'字符串'对于字段' id'在现有的Realm文件中

时间:2017-05-22 19:49:20

标签: java android realm

我有一个领域数据库。

@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)

2 个答案:

答案 0 :(得分:1)

如果您处于开发阶段,则应向.deleteRealmIfMigrationNeeded()添加RealmConfiguration。一旦投入生产,您在修改模型类时将需要一个迁移步骤,以便用户在升级应用程序时不会丢失数据。

答案 1 :(得分:0)

错误是由于将id从int更改为String。

我在设备上卸载了应用程序,再次运行它并且有效。