I am using Room Persistence Library 1.1.0. I could find the database file at /data/data/<package_name>/databases/
using Android Studio's Device File Explorer.
It contains multiple tables and I can access contents of that tables without any problem using room-DAO
s. However when opening with sqlite-browser
, is shows no table.
What might be the reason? Is it possible to resolve the issue without switching back to old SQLiteOpenHelper
from room?
Solution
To open such databases* with
sqlite-browser
, you need to copy all three files. All must be in the same directory.* Databases stored in multiple files as stated in the question.
Why three files?
As per docs, Starting from version
1.1.0
, Room useswrite-ahead logging
as default journal mode for devices which has sufficient RAM and running on API Level 16 or higher. It wasTruncate
for all devices until this version.write-ahead logging
has different internal structure compared toTruncate
.Take a look at the files temporary files used by
SQLite
now and then :Until version 1.1.0
From version 1.1.0
If you want to change the journal mode explicitly to
Truncate
, you can do it this way. But, it is not recommended becauseWAL
is much better compared toTruncate
.Is it possible to move it to single file without changing to
Truncate
?Yes, it is. Query the following statement against the database.
It is discussed in detail here here.