在Google Chrome 21中删除indexeddb数据库时出错

时间:2012-08-02 17:43:47

标签: google-chrome indexeddb

从今天起,当我尝试删除Google Chrome版本21中的IndexedDB数据库时,我开始收到错误。 当我运行删除数据库的命令时:

window.webkitIndexedDB.deleteDatabase(dbName);

以下事件触发:

IDBVersionChangeEvent
bubbles: false
cancelBubble: false
cancelable: false
clipboardData: undefined
currentTarget: IDBVersionChangeReques
defaultPrevented: false
eventPhase: 2
returnValue: true
srcElement: IDBVersionChangeRequest
target: IDBVersionChangeRequest
timeStamp: 1343929274696
type: "blocked"
version: ""

其他信息:我正在从Web工作者和窗口访问IndexedDB。

2 个答案:

答案 0 :(得分:4)

这意味着某处有一个与该数据库的开放连接。它可以位于与调用deleteDatabase的选项卡不同的选项卡中。该连接收到一个版本更改事件,通知它已经调用了deleteDatabase并且需要关闭它。

您可以在打开数据库时添加此类处理程序:

request = indexeddb.open("dbname");
request.onsuccess = function(event) {
  db = event.target.result;
  db.onversionchange = function(event) {
    event.target.close();
  }
}

答案 1 :(得分:0)

问题在于从Web工作者访问数据库。在这行代码中:

database.close();//closing the database
self.close();//closing the web worker

如果数据库关闭需要比平常更多的时间并关闭网络工作程序,那么Google Chrome中可能存在一些错误,那么当您尝试删除数据库时数据库会被锁定。

我通过不关闭Web worker并让它保持空闲模式来解决问题。