数据库表在 Android Pie 9 中不可见

Database tables are not visible in Android Pie 9

我已经在 Android 9.0 Pie phone 上测试了我的应用程序(使用 sqlite 数据库),当我在 DB sqlite 浏览器中打开数据库时,它没有显示我创建的表格在我的 Sqlite 数据库中创建。我在 Android Studio 中的 Android 9.0 Pie 模拟器上做了同样的事情...但是数据库表不可见

您的问题可能是您只复制了数据库文件,而没有复制 -wal-shm 文件。 尝试复制所有三个文件,然后表格可能可用。

  • -wal 和-shm 文件与数据库文件同名,但分别以-wal 和-shm 为后缀。

原因是 Android Pie 打开时,默认模式是 WAL (write-ahead logging) 而不是以前的默认模式日志模式。

使用 journal 模式,更改将写入数据库并存储在日志文件中,允许从日志文件回滚更改。

使用 WAL 模式,更改将写入 -wal 文件(实际上是数据库的一部分),回滚有效地从 -wal 文件中删除更改。但是,如果 -wal 文件尚未提交到实际数据库,并且在没有 -wal 文件的情况下打开数据库,则更改似乎已丢失。

如果数据库完全关闭,这将检查点并将 -wal 文件中的更改包含到数据库文件中。