Подтвердить что ты не робот

Что такое база данных SQLite -journal в Android?

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

например: myDatabase, myDatabase-journal, myOtherDatabase.db, myOtherDatabase.db-journal

Что это?

и

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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