从今天开始,当我尝试删除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 workers和window访问IndexedDB。
发布于 2012-08-06 21:06:39
问题出在web工作人员访问数据库的过程中。在这行代码中:
database.close();//closing the database
self.close();//closing the web worker如果关闭数据库需要比平时更多的时间,并且你关闭了web worker,那么当你试图删除数据库时,数据库就会被锁定。
我已经修复了这个问题,不关闭web worker并让它处于空闲模式。
发布于 2012-08-03 08:00:54
这意味着在某处有一个打开的数据库连接。它可能位于与调用deleteDatabase的选项卡不同的选项卡中。该连接收到了一个versionchange事件,通知它已经调用了deleteDatabase,需要关闭。
您可以在打开数据库时添加这样的处理程序:
request = indexeddb.open("dbname");
request.onsuccess = function(event) {
db = event.target.result;
db.onversionchange = function(event) {
event.target.close();
}
}https://stackoverflow.com/questions/11782946
复制相似问题