如何删除indexedDB?

102

我正在进行一个涉及使用IndexedDB的项目。由于我刚开始接触这项技术,因此需要手动删除indexedDB以便重新开始。

我已经找到了在Firefox中执行此操作的方法,但是我无法找到在Google Chrome中执行此操作的方法。

我尝试删除了这个文件夹的内容(我正在使用Mac):

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

但似乎Chrome仍然在任何地方保留着数据库,因此我无法重新开始。

20个回答

167

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

indexedDB.deleteDatabase('DB NAME')

15
这一直对我失败,后来我意识到我需要先关闭数据库。在我的成功处理程序中,我保留了对数据库的方便引用(e.target.result),因此我可以在其上调用close()。只有这样才能调用deleteDatabase('DB NAME')。如果你正在使用Chrome开发者工具资源选项卡,请右键单击并使用“刷新indexedDB”才能查看删除的结果。 - fullstacklife
在 Chrome 应用中找不到主机名,但是当您检查该应用时,它可以正常工作。 - khany

108

理论上,在Chrome中删除IndexedDB的所有步骤如下:

  1. 在Chrome中,转到“选项”>“隐私设置”>“所有cookie和站点数据”>找到您创建IndexedDB的域名
  2. 点击“X”或单击“Indexed Database”>“删除”

在Windows上,文件位于此处:

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

在Mac上,执行以下操作:

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

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

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

在Linux上,该文件夹位于:

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

6
Chrome for OS X没有“选项”菜单项或任何关于“Under the Hood”的参考,因此这可能对某些人来说是一个令人困惑的提示。 - Mark Caufman
3
在OS X中,您可以通过“Chrome>清除浏览数据”到达该位置,关闭对话框,然后转而进入“高级设置”,而不是“Under the Hood”。之后就和上面差不多了。 - natevw
60
我认为在控制台中运行indexedDB.deleteDatabase("databaseName")更容易。 - user854301
1
在OSX Chrome v31上的步骤:
  1. 设置 > 显示高级设置... > 隐私 > 内容设置... > Cookies > 所有Cookie和站点数据...
  2. 搜索以过滤您的IP。
  3. 点击“索引数据库”。
  4. 删除它!
- Amo Wu
也许是Linux下的Chrome浏览器或者是更新的版本,但这是我个人的经验总结步骤:
  1. 设置 > 显示高级设置... > 内容设置 > 所有Cookie和网站数据,找到你所创建IndexedDB的域名
  2. 点击“X”或点击“Indexed Database” > 删除
- Software Prophets

30

另一种方法是在开发者控制台中执行此命令:

indexedDB.deleteDatabase("databaseName")

1
这是最简单的方法。您只需在资源中右键单击“IndexedDB”,然后选择“刷新IndexedDB”以确认数据库已被清除。 - Velojet

9
在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]);
}; 

你不应该在任何实际网站上使用带前缀的API。而且你也不应该在没有特性检测的情况下使用非标准代码。 - Nux

6

Chrome -> 检查器窗口 -> 应用程序 -> 查看左侧菜单 -> 存储 -> IndexedDB。

请确保在您的应用程序页面上。此外,我认为Safari在7天后会过期IDB数据。


5
在OSX终端模拟器中运行以下命令以删除所有Chrome IndexedDB数据库。
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/*"

4

在控制台中输入以下代码段:

window.indexedDB.deleteDatabase(<你的数据库名称>)


3

要在 Chrome 的 OS X 版本中删除 IndexedDB:

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

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

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

4)点击列表中的域名条目。

5)点击域名下列出的“indexed database”标签。

6)在 indexed database 的下拉详细信息中,点击“删除”按钮。


3

现在Chrome开发者工具中有一个选项可以删除应用程序的所有数据库,位于“应用程序/清除存储”下。


2

这可能有点过于复杂了,但在我试图删除我的idb时,我一直在这里。

最终我的解决方案基于mozilla的文档,但需要我首先关闭数据库。

对于我来说,在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");
};

即使这是一个旧的问题/答案,非常感谢! - Peter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接