【问题标题】:Accessing databases via. adb shell通过访问数据库。亚行外壳
【发布时间】:2014-02-22 17:12:30
【问题描述】:

developer docs 中提到sqlite3 可通过adb shell 获得。但是,当我这样做时,我正在查看的数据库看起来完全是空的,而当我 adb pull .sqlite 文件并在本地检查它时,它包含它应该包含的内容。例如,在后一种情况下.tables 列出了表,在前一种情况下它什么都不列出,并尝试从应该存在的表中返回“错误:没有这样的表”。等等。

没有权限问题——sqlite3 启动时毫无怨言,我显然是 root 权限是 660。

【问题讨论】:

  • 使用adb shell 运行sqlite3 的效果如何?
  • @CL 根据this official-but-casual descriptionadb shell是一个unix-y远程shell,因此可以访问设备/system/bin中的二进制文件。但是,在 sqlite3 的情况下,我猜它在远程文件上使用本地版本,因为 A)我在设备的 /system/bin 中看不到 sqlite3,并且 B)android SDK 包含一个副本sqlite3tools/ 目录中。
  • 运行sqlite3的具体内容是什么?
  • @CL 抱歉,大声笑,我的眼睛读到 “你到底为什么要尝试运行 sqlite3?”谢谢, 因为这当然会导致我的问题:sqlite3 如果路径不存在,则会创建一个文件。当我第一次进去的时候,我一定是升级了一个级别(/data/data/[app]/ 而不是/data/data/[app]/databases),然后一直把它当作我要找的东西……facepalm。

标签: android sqlite adb


【解决方案1】:

担心有一天有人会犯同样的愚蠢错误:请注意,如果您使用sqlite3 的文件路径不存在,则会假定您正在创建一个新数据库而创建它。

显然我登录了,cd'd 到 /data/data/[app] -- 我可以在包含 database/[app].sqlite 的 android 设备监视器的“文件资源管理器”中看到 -- 忘记了 cd database 并且没有打扰到 @987654326 @ 因为我(有点下意识地)假设sqlite3 如果不存在会给出“找不到文件”错误。这会创建一个空的 [app].sqlite 文件,我随后一直在该文件中找不到任何内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多