indexeddb之打开高版本数据库时的DOMException
wayfarer
阅读:141
2025-02-15 21:57:57
评论:0
我想创建多个数据存储,所以我找到了可以在版本更改时执行此操作的解决方案。
所以我写了以下内容
var request = indexedDB.open(dbName);
request.onsuccess = function (e){
var db = e.target.result;
var version = db.version;
db.close();
var request2 = indexedDB.open(dbName , ++version);
console.log(request2); //Error on this line
request2.onsuccess = function() { console.log("success .. "); };
request2.onerror = function() { console.log("error..."); };
request2.onblocked = function() { console.log("blocked..."); };
request2.onupgradeneeded = function(e2) {
//Will creaate new datastore here
};
}
当我打开更高版本的数据库时,出现以下错误“error: [Exception: DOMException]”
DBOpenDBRequest {onupgradeneeded: null, onblocked: null, onerror: null, onsuccess: null, readyState: "pending"…}
error: [Exception: DOMException]
onblocked: function () { console.log("blocked..."); }
onerror: function () { console.log("error..."); }
onsuccess: function () { console.log("success .. "); }
onupgradeneeded: function (e2) {
readyState: "pending"
result: [Exception: DOMException]
source: null
transaction: null
__proto__: IDBOpenDBRequest
提前致谢。
请您参考如下方法:
我认为版本属性可能是问题所在。你确定它有值(value)吗?当版本值为 0 或负数时打开数据库时发生 DOM 异常。有关详细信息,请参阅 the specs
当您尝试使用更高版本再次打开数据库时,您会收到一个被阻止的事件。
尝试将以下内容添加到 db 对象。
db.onversionchange = function (event) { event.target.close(); }
这将关闭当前连接。因此数据库的升级可以继续进行。升级数据库时,您不能有任何打开的连接。
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。