Пустой файл SQLite в Android 9 - PullRequest
       18

Пустой файл SQLite в Android 9

0 голосов
/ 16 января 2019

В прошлый раз я заметил, что у моего приложения есть проблема с резервным копированием базы данных SQLite.Для резервного копирования базы данных я копировал файл *.db из /data/data/com.pkg.app/databases/db_name.db во внутреннее хранилище.Для восстановления я скопировал из внутреннего хранилища в /data/data/com.pkg.app/databases/db_name.db.Но в Android P что-то не так.Эти файлы БД существуют, но их вес составляет 4 КБ.Когда я открыл этот файл через DB Browser, я заметил, что файл пуст - нет таблиц и данных.Это странно, потому что приложение работает правильно.Вопрос в том, где мне искать файл базы данных, который использует мое приложение?Android 8 и менее не имеет этой проблемы.Я использую эмулятор.

1 Ответ

0 голосов
/ 16 января 2019

В Android P + WAL (запись в журнал впереди) включена по умолчанию. Это приводит к двум дополнительным файлам, в которых к исходному имени файла добавляются -shm (файл с общей памятью) и -wal (запись в журнал впереди).

Их необходимо либо копировать при резервном копировании и восстановлении, либо выполнять резервное копирование только после того, как база данных будет полностью проверена, вы можете затем удалить файлы -shm и -wal как часть процесса восстановления.

Альтернативой является отключение WAL и использование менее эффективного режима журнала.

Возможно, вы захотите проверить Импорт и экспорт базы данных не работает в Android Pie .

...