なぜエラーが発生するのですか?
私のコード:
var idb = window.indexedDB || // Use the standard DB API
window.mozIndexedDB || // Or Firefox's early version of it
window.webkitIndexedDB; // Or Chrome's early version
var IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction;
var IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange;
var dbName='nameDb';
var idbRequest=idb.open(dbName,'4.67' /*,dbDescription */);
idbRequest.onsuccess=function (e) {
debugger
var db=e.target.result;
if (!db.objectStoreNames.contains('chat')){
co=db.createObjectStore('chat',{'id':100});
};
if (!db.objectStoreNames.contains('iam')){
co1=db.createObjectStore('iam');
};
};
idbRequest.onerror = function (e) {
debugger
};
Uncaught InvalidStateError:「IDBDatabase」で「createObjectStore」の実行に失敗しました:データベースはバージョン変更トランザクションを実行していません。 index.html:37 idbRequest.onsuccess
objectStore
メソッドでonsuccess
を作成することはできません。これは、upgradeneeded
イベントでのみ実行できます。
ドキュメントからの引用:
新しいデータベースを作成するか、既存のデータベースのバージョン番号を増やすと(データベースを開くときに、以前よりも高いバージョン番号を指定することにより)、
onupgradeneeded
イベントがトリガーされます。このイベントのハンドラーで、このバージョンのデータベースに必要なオブジェクトストアを作成する必要があります
ドキュメント を参照してください。