2015-11-30 3 views
3

У меня есть предварительная база данных в реальном времени, поэтому у меня есть default.realm. Я хочу использовать его в другом приложении, поэтому я поместил его в папку \ res \ raw. Я читал, что это должно быть так же просто, как вызвать Realm.getInstance(). У меня есть такой код:Импорт предварительно заполненной базы данных Царства

copyBundledRealmFile(this.getResources().openRawResource(R.raw.default0), "default.realm"); 

realm = Realm.getInstance(this); 

private String copyBundledRealmFile(InputStream inputStream, String outFileName) { 
     try { 
      File file = new File(this.getFilesDir(), outFileName); 
      FileOutputStream outputStream = new FileOutputStream(file); 
      byte[] buf = new byte[1024]; 
      int bytesRead; 
      while ((bytesRead = inputStream.read(buf)) > 0) { 
       outputStream.write(buf, 0, bytesRead); 
      } 
      outputStream.close(); 
      return file.getAbsolutePath(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

Но он не работает. Я вижу файл default.realm в своем приложении, поэтому я думаю, что copyBundledRealmFile был выполнен, но затем происходит io.realm.exceptions.RealmMigrationNeededException. Я не знаю, есть ли способ пропустить часть миграции? Поскольку я думаю, что на самом деле не мигрирую, просто используйте предварительно заполненный файл данных. И написать Migration part будет не так просто, как вызвать Realm.getInstance().

+0

Нет ничего плохого в коде, который вы опубликовали. Собранная база данных копируется правильно. 'RealmMigrationNeededException' означает, что подклассы' RealmObject', которые вы определили в своем проекте, и структура связанного файла области не соответствуют точно. Проверьте и убедитесь, что столбцы таблицы базы данных, определенные в объединенном файле realm и в классах моделей, совпадают (имя, тип данных, значение null). – Mehedi

+0

Хммм, я уверен, что они должны совпадать, потому что я просто скопировал-вставку из одного приложения (которое заполняло базу данных) во второе приложение, которое я сейчас использую. – meDarq

+0

Имеют ли эти два приложения одни и те же наборы классов моделей без каких-либо упущений классов, модификаций имен классов, свойств и их типов? – marius

ответ

0

Я столкнулся с той же проблемой. Но проблема была в моем определении модели. Я сделал это вручную.

Попробуйте открыть базу данных в браузере Realm Browser и Save Model Definition для Java. Я сделал это, и это исправило проблему.