索引数据库删除数据库不会重置版本

IndexedDB deleteDatabase does not reset version

本文关键字:数据库 版本 删除 索引      更新时间:2023-09-26

在Firefox中。初始化(一次)

var r, dbname = 'a1', db = mozIndexedDB;

第一

try { r = db.open(dbname, 5); } catch (ex) { console.log(ex); }
r.onupgradeneeded = r.onsuccess = r.onblocked = r.onerror = function (e) { console.log(e); };

你会得到两个事件按预期触发。然后关闭数据库,

r.result.close()

最后,删除数据库,

try { r = db.deleteDatabase(dbname); } catch (ex) { console.log(ex); }
r.onsuccess = r.onerror = r.onblocked = function (e) { console.log(e); };

删除成功。但是,当我开始运行第一步 scrip(打开数据库)时,"onupgradeneed"不会被触发并使用删除之前的版本打开数据库。是错误,还是我做错了?

谢谢。

你似乎没有做错任何事。就其价值而言,我相信deleteDatabase实现在FF中相对较新,所以也许您发现了一个错误。

我会尝试的一件事是在重新启动浏览器之前首先检查然后物理删除支持 IndexeDB 的 .sqlite 数据库文件。这可能是一个缓存的东西。这些文件的路径如下。

在电脑上:

C:''Users''username''AppData''Roaming''Mozilla''Firefox''Profiles''<*>.default''indexedDB

在 Mac 上:

/

用户/用户名/库/应用程序'' Support/Firefox/Profiles/<*>.default/indexedDB/

.sqlite 文件中具有数据库版本的表称为 database ,有两列:"名称"和"版本"。您的数据库应位于该表中,并应列出版本号。

删除

数据库应删除该行。如果没有,我相信你发现了一个错误。

最糟糕的是,删除indexedDB配置文件文件夹中的整个目录,然后重新安装以验证全新安装是否有效。