如何删除索引数据库?
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 应用程序,并在完成后关闭它:数据库已删除。
【讨论】:
以上是关于如何删除索引数据库?的主要内容,如果未能解决你的问题,请参考以下文章