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?
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)