2016-06-24 3 views
1

Я использую realm для databse processing в моих android project. И я получил отчет некоторых пользователей о crash:Царство: Недопустимый формат файла Realm

java.lang.IllegalArgumentException: Illegal Argument: Invalid format of Realm file. 
at io.realm.internal.SharedGroup.createNativeWithImplicitTransactions()(SourceFile:-2) 
at io.realm.internal.SharedGroup.<init>()(SourceFile:64) 
at io.realm.internal.SharedGroupManager.<init>()(SourceFile:49) 
at io.realm.BaseRealm.<init>()(SourceFile:77) 
at io.realm.Realm.<init>()(SourceFile:138) 
at io.realm.Realm.createAndValidate()(SourceFile:269) 
at io.realm.Realm.createInstance()(SourceFile:249) 
at io.realm.RealmCache.createRealmOrGetFromCache()(SourceFile:114) 
at io.realm.Realm.getInstance()(SourceFile:213) 

Я никогда не сталкиваются аварии при разработке, но, кажется, что мой пользователь получил его во много раз. Ниже моя реализация, которая была обнаружена авария:

private Realm getRealmFromConfig(Context context) { 
    RealmConfiguration config = getRealmConfigByDBName(context, databaseName); 
    Realm.compactRealm(config); 
    return Realm.getInstance(config); 
} 

public RealmConfiguration getRealmConfigByDBName(Context context, String dbName) { 
    RealmConfiguration config = new RealmConfiguration.Builder(context) 
      .name(dbName) 
      .schemaVersion(1) 
      .setModules(new Module()) 
      .deleteRealmIfMigrationNeeded() 
      .build(); 
    return config; 
} 

краш-журнал отмечает, что аварии происходят в линии return Realm.getInstance(config);

я взглянуть на Realm.java файл, но до сих пор не может получить больше информации, которая связанным с сообщением Invalid format of Realm file. Так что любой может помочь мне дать решение или обходное решение, которое может решить проблему или какую-то теорию о том, почему происходит сбой.

Большое спасибо!

+0

Я - разработчик Realm. Пожалуйста, укажите это в github, поскольку это звучит как потенциальная ошибка в 'Realm.compactRealm()'. – geisshirt

+0

Да, @geisshirt, я нашел тему здесь https://github.com/realm/realm-java/issues/2746, но его решение не работало для меня :(Так что эта ошибка будет исправлена ​​в следующей версии или должна Я должен сделать некоторые трюки? –

+0

Если вы можете заполучить недопустимый файл, мы будем очень рады, если вы сможете отправить нам его. – geisshirt

ответ

0

Я столкнулся с той же проблемой, когда я понизил Королевство от 2.0.0 до 1.0.1 (2.0.0 имеет серьезную ошибку).

Способ, которым я решил, не был умным (даже близко), но это самый быстрый. Я поймал IllegalArgumentException, а затем удалит файл базы данных Realm. ¯_ (ツ) _/¯

Смежные вопросы