2017-05-22 4 views
1

レルムデータベースを取得しました。既存のレルムファイルのフィールド 'id'に無効なタイプの '文字列'

@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

をエラー文字列にint型からIDを変更したためです。

私はデバイス上でアプリケーションをアンインストールし、再度実行して動作させました。

+1

将来は、 'deleteRealmIfMigrationNeeded()'を使うか、マイグレーションステップを記述してください。 – geisshirt

1

開発段階にいる場合は、をRealmConfigurationに追加してください。本番環境では、アプリケーションのアップグレード時にデータを失わないように、モデルクラスを変更する際に移行手順が必要になります。

関連する問題