Повторные вызовы в Room Persistence Library усекают локальную файловую таблицу - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть приложение для Android с локальной базой данных sqlite, к которому я обращаюсь с помощью Библиотеки постоянных номеров.

Я могу получить доступ к файлу с помощью этого:

cAssetsDatabase cassetsDatabase  = Room.databaseBuilder(context, cAssetsDatabase.class, "localDB.sqlite").fallbackToDestructiveMigration().build();


cAssets cassets = cassetsDatabase.daoAccesscAssetsDB().fetchAssetByTagID(TagID);

Все работает правильно,к сожалению, после выхода из этого действия и возврата при попытке доступа к базе данных возвращается значение null.

Когда я извлекаю базу данных с устройства после обращения к ней, создается впечатление, что таблица, которую я использовал для выбора, была усечена.

1 Ответ

1 голос
/ 23 сентября 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...