Что такое" - журнал " SQLite база данных в Android?

в каталоге базы данных моего приложения andoid (/data/data / com.меня.myApp / databases), для каждой базы данных sqlite, которую я создаю, есть соответствующая база данных с тем же именем с добавлением "-journal" к ее имени.

Эл.г: данных mydatabase, данных mydatabase-журнал, myOtherDatabase.db, myOtherDatabase.db-journal

Что это?

и

Если я предоставляю предварительно заполненные базы данных для моего приложения (согласно: http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/) мне нужно включить их также?'

1 ответов


такие -journal файлы не должны (и должны не) распространяется.

это потому, что различные файлы журнала представляют временные данные (ref. использование SQLite временных файлов диска) используется SQLite. В частности Это откат журнал.

журнал отката-это временный файл, используемый для реализации возможностей атомной фиксации и отката в SQLite. (Для детального обсуждение того, как это работает, см. отдельный документ под названием Atomic Commit в SQLite.) Журнал отката всегда находится в том же каталоге, что и файл базы данных, и имеет то же имя, что и файл базы данных, за исключением 8 символов "-journal".

журнал отката обычно создается при первом запуске транзакции и обычно удаляется при фиксации или откате транзакции. Файл журнала отката необходим для реализации atomic возможности фиксации и отката SQLite. Без журнала отката SQLite не сможет откатить незавершенную транзакцию, и если сбой или потеря мощности произошли в середине транзакции, вся база данных, вероятно, будет повреждена без журнала отката.

в целом -journal файлы должны существовать только , когда существует открытая база данных SQLite - или, скорее, запущенная транзакция-но может управляться через PRAGMA journal_mode. С настройками pragma по умолчанию -journal файлы будут удалены.

режим журнала удаления-это нормальное поведение. В режиме удаления журнал отката удаляется при завершении каждой проводки. Действительно, операция удаления-это действие, которое приводит к фиксации транзакции.

обязательно только скопировать файлы базы данных, когда база данных не открыл и все журналы были удалены (или очищены) самим SQLite; это означает, что все транзакции были завершены, и база данных находится в согласованном состоянии.