如何删除索引数据库?

Posted

技术标签:

【中文标题】如何删除索引数据库?【英文标题】:How to delete indexedDB? 【发布时间】:2012-03-12 03:37:41 【问题描述】:

我正在从事一个涉及使用 IndexedDB 的项目。 随着我开始了解这项技术,我需要能够手动删除索引数据库,以便重新开始。

我在 Firefox 中找到了方法,但在 Google Chrome 中找不到方法。

我尝试删除此文件夹的内容(我使用的是 Mac):

home/Library/Application Support/Google/Chrome/Default/IndexedDB

但 Chrome 似乎在任何地方都有数据库,所以我无法重新开始。

【问题讨论】:

【参考方案1】:

为了完成@Judson 的回答,基于@fullstacklife 的评论;要使用 javascript 在 chrome 中删除 IndexedDB,您应该:

let currentIDB = indexedDB.open("DB_NAME", DB_VERSION_INTEGER);
    currentIDB.onblocked = function()
        //
    ;
    currentIDB.onerror = function()
        //
    ;
    currentIDB.onsuccess = function()
        var idb = currentIDB.result;
        idb.close();
        indexedDB.deleteDatabase("DB_NAME");
    ;

【讨论】:

【参考方案2】:

Chrome -> Inspector Window -> Application -> 查看左侧菜单 -> Storage -> IndexedDB

【讨论】:

【参考方案3】:

我需要摆脱 Chrome 中的 indexedDB。因此,我使用 MasterSeeker 在我的计算机上搜索了这个名为“电子邮件助手”的糟糕东西。在 Chrome 中 indexedDB 的一堆文件夹中找到了这个东西。我只是删除这些文件似乎太容易了。我查了一下如何,最后到了这里。我使用 Windows 10 PC 进行了 chrome 设置。我只是尝试清除浏览数据。 Presto - 所有这些文件都从 indexedDB 中消失了,包括那个可怕的“电子邮件助理”crapola。现在,当我查看 indexedDB 文件夹时,我看到的只是 https_mail.google.com_0.indexeddb.leveldb - 这看起来像是一件安全且无刺激性的事情。

【讨论】:

【参考方案4】:

对于您的具体问题,这可能有点矫枉过正,但我​​一直在努力删除我的 idb。

我最终的解决方案是基于mozilla's documentation,但是要求我先关闭数据库。

对我来说,在 Javascript 中,代码如下所示:

my_db_instance.close(function(e)console.log(e));
var DBDeleteRequest = indexedDB.deleteDatabase("my_db_name");

// When i had the base open, the closure was blocked, so i left this here
DBDeleteRequest.onblocked = function(event) 
  console.log("Blocked");
;

DBDeleteRequest.onerror = function(event) 
    console.log("Error deleting database.");
  console.log(event);
;

DBDeleteRequest.onsuccess = function(event) 
  console.log("Database deleted successfully");
;

【讨论】:

即使是老问题/答案,也非常感谢!!【参考方案5】:

Chrome 开发者工具现在可以在“应用程序/清除存储”下删除应用程序的所有数据库。

【讨论】:

【参考方案6】:

理论上,在 Chrome 中删除 IndexedDB 所需要做的就是:

    在 Chrome 中,转到选项 > 后台 > 内容设置 > 所有 cookie 和站点数据 > 找到您创建 IndexedDB 的域 点击“X”或单击“索引数据库”> 删除

在 Windows 中,文件位于此处:

%USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default\IndexedDB

在 Mac 上,执行以下操作:

    在 Chrome 中,转到“设置”(或 Chrome 菜单下的“首选项”) 点击“显示高级设置”(在页面底部) 转到“隐私”>“内容设置”>“所有 cookie 和站点数据”> 找到您创建 IndexedDB 的域 点击“X”或单击“索引数据库”> 删除

在 Mac 上,该文件夹位于此处:

/Users/[USERNAME]/Library/Application Support/Google/Chrome/Default/IndexedDB/

在 Linux 上,该文件夹位于:

/home/[USERNAME]/.config/google-chrome/Default/IndexedDB/

【讨论】:

Chrome for OS X 没有“选项”菜单项或对“引擎盖下”的任何引用,因此这对某些人来说可能是一个令人困惑的提示。 在 OS X 上,您可以通过“Chrome > Clear Browsing Data...”到达那里,关闭对话框,然后转到“高级设置”而不是“幕后”。之后就和上面一样了。 我认为在控制台中运行 indexedDB.deleteDatabase("databaseName") 更容易。 在 OSX Chrome v31 上步骤: 1. 设置 > 显示高级设置... > 隐私 > 内容设置... > Cookies > 所有 cookie 和站点数据... 2. 搜索以过滤您的 IP . 3. 点击Indexed database。 4. 删除它! 可能是 Linux 下的 Chrome,也可能是较新的版本,但根据我的经验,以下是到达那里的步骤: 1. 设置 > 显示高级设置... > 内容设置 > 所有 cookie 和站点数据找到您创建 IndexedDB 的域 2. 点击“X”或单击“索引数据库”> 删除【参考方案7】:

在控制台中编写这段代码

window.indexedDB.deleteDatabase(<your db name>)

【讨论】:

【参考方案8】:

在 Chrome webkit 中,您可以使用 webkitGetDatabaseNames 返回所有数据库名称

使用此代码,您可以删除所有本地 indexedDB:

window.indexedDB.webkitGetDatabaseNames().onsuccess = function(sender,args)

    var r = sender.target.result;
    for(var i in r)
        indexedDB.deleteDatabase(r[i]);
; 

【讨论】:

【参考方案9】:

在windows中,您可以手动删除整个IndexedDB数据库,方法是找到浏览器的IndexedDB目录并删除它

对于 Chrome:

C:\Users\user-name\AppData\Local\Google\Chrome\User Data\Profile 1\IndexedDB

您可以删除所有清除 indexedDB 的文件夹。你现在可以重新开始。

【讨论】:

【参考方案10】:

要删除 所有 Chrome IndexedDB 数据库,请在 OSX 终端模拟器中运行以下命令。

rm -rf $HOME/Library/Application\ Support/Google/Chrome/Default/IndexedDB/*

现在重启浏览器就可以了。


因为我需要经常清理 IndexedDB 数据库,所以我在 ~./bash_profile 中设置了一个别名。

alias purge-idb="rm -rf $HOME/Library/Application\ Support/Google/Chrome/Default/IndexedDB/*"

【讨论】:

【参考方案11】:

无法以编程方式删除 IndexedDB 数据库(与存储和索引相反)。

至于手动解决方法,this post 详细说明了 Firefox 和 Chrome 的 Windows 系统上的数据库位置。

更新:感谢开发人员 Joshua Bell,Chrome 在 window.indexedDB 对象上实现了一个不规范(但非常有用)的 deleteDatabase 方法。这是登陆此补丁的crbug。此外,在较新版本的IE中,您可以删除数据库via a settings panel。

【讨论】:

【参考方案12】:

替代方法是在开发者控制台中执行此操作,使用以下命令:

indexedDB.deleteDatabase("databaseName")

【讨论】:

这是最简单的方法。您只需在资源中右键单击“IndexedDB”并选择“刷新 IndexedDB”以确认数据库已被删除。【参考方案13】:

我在 Chrome 中成功运行了以下内容:

indexedDB.deleteDatabase('DB NAME')

【讨论】:

这对我来说一直失败,然后我意识到我需要先关闭数据库。在我的成功处理程序中,我保留了对数据库 (e.target.result) 的方便引用,因此我可以在其上调用 close()。只有这样才能调用 deleteDatabase('DB NAME')。如果您在 chrome 开发工具资源选项卡上,您还需要右键单击并使用“刷新 indexedDB”来查看删除结果。 无法找到 chrome 应用程序的主机名,但在您检查应用程序时可以使用。【参考方案14】:

在 Debian GNU/Linux 目录中

/home/[用户名]/.config/google-chrome/Default/IndexedDB/chrome-xxx.indexeddb.leveldb/

包含常规文件(例如):

000003.log, CURRENT, LOCK, LOG, MANIFEST-000002

【讨论】:

【参考方案15】:

在 chrome OSX-/Users/user/Library/Application Support/Google/Chrome/Default/IndexedDB Firefox OSX - 用户/用户/库/应用程序支持/Firefox/Profiles/4zaemxcn.default/indexedDB

您只需要使库文件夹可见。所有文件都存储在文件夹中(称为域名),文件使用哈希,但您可以从中找出数据库的名称。 您可以从 IDB 中删除数据,因为它是客户端数据库,所有数据都存储在本地。

【讨论】:

【参考方案16】:

从 OS X 版本的 Chrome 中删除 IndexedDB:

1) 在首选项中,显示高级设置,然后点击“隐私”部分下的“内容设置”按钮。

2) 在“内容设置”弹出窗口中,单击“Cookies”部分下的“所有 Cookies 和站点数据”按钮。

3) 在“Cookie 和站点数据”弹出窗口中,使用“搜索 Cookie”文本框查找作为 IndexedDB 来源的域。

4) 单击列表中的域条目。

5) 点击域下列出的“索引数据库”标签。

6) 在索引数据库的下拉详细信息中单击“删除”按钮。

【讨论】:

【参考方案17】:

或者,在新的隐身窗口中使用您的 Web 应用程序,并在完成后关闭它:数据库已删除。

【讨论】:

以上是关于如何删除索引数据库?的主要内容,如果未能解决你的问题,请参考以下文章

oracle中删除记录时将索引一块删除吗

如何删除 Pandas 数据帧索引的“秒”?

python 数组中如何根据值,获取索引,如何根据索引删除值 , 以及如何根据值删除值

如何通过 curl 查询删除 SOLR 索引数据?

如何删除熊猫数据透视表中的多级索引

如何在 Xcode 中删除 Fetch 索引元素