无法在Google Chrome中打开IndexedDB数据库

时间:2012-06-25 03:43:17

标签: google-chrome indexeddb

Google Chrome中的此代码有什么问题

r = webkitIndexedDB.open(db_name,1);
r.onsuccess = success_callback;
r.onerror = error_callback;
r.onupgradeneeded = function(e){
   var db = e.currentTarget.result;
   db.createObjectStore('os_name',{keyPath:id,autoIncrement:true});
};

它适用于firefox(mozIndexedDB)但不适用于chrome。即使是恐怖也不会被触发。无论如何我得到这个错误

Uncaught Error: NOT_FOUND_ERR: DOM IDBDatabase Exception 3

1 个答案:

答案 0 :(得分:4)

Google Chrome中不支持{p> onupgradeneeded功能,而是应该使用setversion方法在数据库打开时onsuccess事件开头启动数据库,如下所述: http://www.html5rocks.com/en/tutorials/indexeddb/todo/#toc-step2

您的代码应如下所示:

r.onsuccess = function(e) {
    var v = "1.0";
    var db = e.currentTarget.result;
    // We can only create Object stores in a setVersion transaction;
    if(v!= db.version) {
      var setVrequest = db.setVersion(v);

      setVrequest.onfailure = error_callback;
      setVrequest.onsuccess = function(e) {
        var store = db.createObjectStore('os_name',{keyPath:id,autoIncrement:true});
        ...
      };
    }
    ...
}

2013年11月编辑:现在这是一个过时的答案,因为Google Chrome仅支持使用onupgradeneeded事件升级数据库。