gpt4 book ai didi

Android:使用 room 创建的 SQLite 数据库在使用 sqlite-browser 打开时不显示任何表

转载 作者:IT王子 更新时间:2023-10-29 06:18:39 27 4
gpt4 key购买 nike

我正在使用 Room Persistence Library 1.1.0。我可以在 /data/data/<package_name>/databases/ 找到数据库文件使用 Android Studio 的设备文件资源管理器。

它包含多个表,我可以使用 room-DAO 毫无问题地访问这些表的内容秒。但是当用 sqlite-browser 打开时, 没有显示表格。

可能是什么原因?是否可以在不切换回旧版 SQLiteOpenHelper 的情况下解决问题?从房间?

最佳答案

解决方案

要使用 sqlite-browser 打开此类数据库*,您需要复制所有三个文件。所有这些都必须在同一目录中。

* 如问题所述,数据库存储在多个文件中。


为什么是三个文件?

根据文档,从版本 1.1.0 开始,Room 使用 write-ahead logging 作为具有足够 RAM 并在 API 级别 16 上运行的设备的默认日志模式或更高。在这个版本之前,所有设备都是 Truncatewrite-ahead loggingTruncate 相比具有不同的内部结构。


不时查看 SQLite 使用的文件临时文件:

直到版本 1.1.0

enter image description here

从版本 1.1.0 开始

enter image description here


如果您想将日志模式显式更改为Truncate,您可以这样做。但是,不推荐,因为 WALTruncate 好得多。

public static void initialize(Context context) {
sAppDatabase = Room.databaseBuilder(
context,
AppDatabase.class,
DATABASE_NAME)
.setJournalMode(JournalMode.TRUNCATE).build();
}


是否可以在不更改 Truncate 的情况下将其移动到单个文件?

是的,是的。针对数据库查询以下语句。

pragma wal_checkpoint(full)

这里有详细讨论here .

关于Android:使用 room 创建的 SQLite 数据库在使用 sqlite-browser 打开时不显示任何表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51148012/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com