1

在火狐中。初始化(一次)

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); };

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

谢谢。

4

1 回答 1

1

你似乎没有做错什么。对于它的价值,我相信deleteDatabaseFF 中的实现相对较新,所以也许你发现了一个错误。

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

在 PC 上:

C:\Users\用户名\AppData\Roaming\Mozilla\Firefox\Profiles\<*>.default\indexedDB

在 Mac 上:

/Users/username/Library/Application\ Support/Firefox/Profiles/<*>.default/indexedDB/

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

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

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

于 2012-06-26T23:32:08.970 回答