sql >> Base de Datos >  >> RDS >> SQLite

SQLiteReadOnlyDatabaseException:intento de escribir una base de datos de solo lectura (código 1032)

Estoy atascado con más o menos exactamente el mismo problema y encontré un defecto abierto en el asunto que tiene sentido...

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

Mi solución alternativa, aunque no es la mejor, es nunca revisar la base de datos y realizar un seguimiento de esto yo mismo, por lo tanto, nunca llamar a onUpgrade() y realice una actualización manualmente cuando actualice la aplicación.

Alternativamente, si tiene una base de datos pequeña que es de solo lectura, puede activar la copia de la base de datos en activos en cada onCreate() en DBHelper class, pero esto podría generar problemas no deseados si el sistema de archivos está lleno, así que solo haga esto mientras busca una mejor solución.

@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());
    }
}

Mi aplicación ahora se actualiza como debería con mi solución alternativa y al juzgar cuánto tiempo ha pasado desde que este defecto se planteó originalmente, es posible que nunca se solucione en absoluto...

Lo siento, esto no es una solución completa al problema, pero al menos es un camino a seguir.