SQLite
 sql >> Database >  >> RDS >> SQLite

SQLiteReadOnlyDatabaseException:tentativo di scrivere un database di sola lettura (codice 1032)

Sono bloccato con più o meno lo stesso identico problema e ho trovato un difetto aperto sulla questione che ha senso...

https://code.google.com/p/android/issues/detail?id=174566

La mia soluzione alternativa, anche se non la soluzione migliore, è non eseguire mai la revisione del database e tenerne traccia da solo, quindi non chiamare mai onUpgrade() , ed esegui manualmente un aggiornamento durante l'aggiornamento dell'app.

In alternativa, se hai un piccolo DB di sola lettura, puoi attivare la copia del db negli asset su ogni onCreate() in DBHelper class, ma questo potrebbe causare problemi indesiderati se il filesystem è pieno, quindi fallo solo cercando una soluzione migliore.

@Override
public void onCreate(SQLiteDatabase db) {
    // Workaround for Issue 174566
    myContext.deleteDatabase(DB_NAME);
    try {
        copyDataBase();
    }
    catch(IOException e) {
        System.out.println("IOException " + e.getLocalizedMessage());
    }
}

La mia app ora si aggiorna come dovrebbe con la mia soluzione alternativa e, a giudicare da quanto tempo è trascorso da quando questo difetto è stato sollevato originariamente, potrebbe non essere mai risolto...

Mi dispiace che questa non sia una soluzione completa al problema, ma è almeno un modo per andare avanti.