SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

SQLiteReadOnlyDatabaseException:tentativa de escrever um banco de dados somente leitura (código 1032)


Estou preso com mais ou menos exatamente o mesmo problema e encontrei um defeito aberto no assunto que faz sentido ...

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

Minha solução alternativa - embora não seja a melhor solução - é nunca fazer a revisão do banco de dados e acompanhar isso sozinho, nunca chamando onUpgrade() e faça uma atualização manualmente ao atualizar o aplicativo.

Alternativamente, se você tem um banco de dados pequeno que é somente leitura, você pode acionar a cópia do banco de dados em ativos em cada onCreate() em DBHelper class, mas isso pode causar problemas indesejados se o sistema de arquivos estiver cheio, portanto, faça isso enquanto procura uma solução melhor.
@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());
    }
}

Meu aplicativo agora é atualizado como deveria com minha solução alternativa e, ao julgar quanto tempo passou desde que esse defeito foi levantado originalmente, talvez nunca seja corrigido ...

Lamento que esta não seja uma solução completa para o problema, mas é um caminho a seguir, pelo menos.