Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 调试数据库和SQLite文件不一致_Android_Sqlite_Android Room_Android Debug - Fatal编程技术网

Android 调试数据库和SQLite文件不一致

Android 调试数据库和SQLite文件不一致,android,sqlite,android-room,android-debug,Android,Sqlite,Android Room,Android Debug,我正在调试一个Android应用程序的问题,这个问题似乎源于它的SQLite数据库中缺少数据。当我使用Android调试数据库打开数据库时,会显示数据。然而,当我使用Android Studio的设备文件浏览器将SQLite文件保存到我的计算机上,然后用SQLite客户端打开它时,数据丢失了 使用Room管理SQLite数据库,并使用TablePlus和SQLite数据库浏览器查看我的计算机上的数据库 文件室使用预写日志记录(WAL)。大多数情况下,这意味着SQLite数据库由三个文件组成:

我正在调试一个Android应用程序的问题,这个问题似乎源于它的SQLite数据库中缺少数据。当我使用Android调试数据库打开数据库时,会显示数据。然而,当我使用Android Studio的设备文件浏览器将SQLite文件保存到我的计算机上,然后用SQLite客户端打开它时,数据丢失了


使用Room管理SQLite数据库,并使用TablePlus和SQLite数据库浏览器查看我的计算机上的数据库

文件室使用预写日志记录(WAL)。大多数情况下,这意味着SQLite数据库由三个文件组成:

  • 不管你给基文件起了什么名字
  • 带有
    .wal
  • 一个带有
    .shm

如果您希望在其他地方使用数据库(例如,桌面SQLite浏览器、备份/还原),则需要复制所有三个文件。

“当我使用Android Studio的设备文件浏览器将SQLite文件保存到我的计算机时”——可能有三个文件,而不仅仅是一个。是的,有-有“正常”文件加上wal和shm文件。wal文件为空,SQLite的DB Browser无法读取shm文件(可能已加密?)。这些文件与差异有何关系?您是否复制了这三个文件?Room已经启用了WAL(写前日志记录),所以您需要所有三个来表示数据库的内容。这就解决了这个问题!复制所有三个时,数据将显示!其他两个文件中的数据是否会导致应用程序认为数据库不包含它?同样的,是否有一个配置来请求应用程序在查询时同时考虑其他两个文件,或者所有这些都是由房间来处理的吗?