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.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号