Erro ao excluir base SQLITE e criar novamente dinamicamente

16/10/2020

0

Tenho um aplicativo Java android rodando a anos. Depois de migrar para o Android 9 (API 28), estou tendo problemas constantemente:

database disk image is malformed (code 11 SQLITE_CORRUPT) e Android SQLiteDiskIOException (code 522 SQLITE_IOERR_SHORT_READ)

O funcionamento do sistema é o seguinte, o sistema tem um processo de sincronismo que faz o upload do banco de dados, prepara um novo (Externo), depois faz o download, apaga o banco de dados atual no dispositivo e coloca o novo que fez o download, ou seja o banco é constantemente sobrescrito no dispositivo!

Este processo sempre funcionou perfeitamente, porém no Android 9 (API 28) por mais incrível que pareça depois de um certo tempo de sincronizar e está trabalhando no aplicativo ocorre os erros acima.

Identifiquei que o problema é exatamente "sobrescrever" o banco de dados no Android 9, mesmo apagando os tais arquivos temporários -shm e wal, já mudei para disableWriteAheadLogging() or PRAGMA journal_mode=DELETE, fecho o banco antes, remove a instância da classe SqliteOpenHelper, não adianta o banco em algum momento esporádico é corrompido aleatoriamente ao fazer um simples rawQuery().

Já mudei para a classe SqliteOpenHelper com e sem singleton. Já utilizei o comando SQLiteDatabase.deleteDatabase antes de mudar o arquivo!

Alguém tem alguma ideia de como resolver este problema?
Giliard Abreu

Giliard Abreu

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar