O que é a base de dados SQLite do "-journal" no Android?

na pasta de bases de dados da minha aplicação andóide (/data/data/com.me.myApp / databases), para cada base de dados sqlite que crio existe uma base de dados correspondente do mesmo nome com "-journal" anexada ao seu nome.

p.ex.: myDatabase, myDatabase-journal, myOtherDatabase.db, o meu outro caso.db-journal

O que é isto?

e

Se estou a fornecer bases de dados pré-cheias para a minha aplicação (de acordo com: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications também preciso de incluir isto?'

Author: user2864740, 2014-10-06

1 answers

Tais arquivos -journal não precisam (e devem não) ser distribuídos.

Isto é porque os vários ficheiros do diário representam dados temporários (ref. a utilização do SQLite de Ficheiros de disco Temporários ) utilizados pelo SQLite. Em particular, um ficheiro -journal é um rollback journal .

Um diário de rollback é um ficheiro temporário usado para implementar capacidades de commit Atómico e de rollback no SQLite. (Para uma discussão detalhada de como isso funciona, veja a documento intitulado Atomic Commit In SQLite. O rollback journal está sempre localizado no mesmo diretório que o arquivo de banco de dados e tem o mesmo nome que o arquivo de banco de dados, exceto com os 8 caracteres "-journal" adicionados.

O Diário de rollback é normalmente criado quando uma transacção é iniciada pela primeira vez e é normalmente eliminado quando uma transacção se compromete ou recua. O arquivo rollback journal é essencial para implementar as capacidades de commit atômico e rollback do SQLite. Sem a rollback journal, SQLite seria incapaz de rollback uma transação incompleta, e se um estoiro ou perda de energia ocorreu no meio de uma transação o banco de dados inteiro provavelmente iria corromper sem um diário de rollback.

De um modo geral, estes ficheiros -journal só devem existir Quando existe uma base de dados SQLite aberta - ou melhor, uma transacção em execução - mas pode ser controlada através PRAGMA journal_mode. Com a configuração predefinida do pragma, os ficheiros -journal serão excluir.

O modo de apagar o diário é o comportamento normal. No modo DELETE, o rollback journal é deletado na conclusão de cada transação. Na verdade, a operação delete é a ação que faz com que a transação se comprometa.

Certifique-se de apenas copiar os ficheiros de base de dados actuais quando a base de dados estivernão aberta e todos os diários tiverem sido apagados (ou apagados) pelo próprio SQLite; isto implica que todas as transacções foram completadas e o a base de dados está num estado consistente.

 17
Author: user2864740, 2016-06-10 18:09:41