업데이트 문제가 차단되었음을 발견했습니다. 데이터베이스는 항상 동일한 확장자로 생성되고 업그레이드되지만 닫히지는 않습니다. 이제는 "onblocked"함수가 호출됩니다.IndexedDB로 인해 데이터베이스 접근 불가 (차단 중), 차단 해제 방법이 있습니까?
현재 차단 된 데이터베이스의 차단을 해제하려면 어떻게해야합니까? 그리고 나는 이것을 어떻게 앞으로 막을 수 있습니까? 이것은 앱이므로 탭을 사용하고 있지 않습니다. 그리고 데이터베이스를 열어서 삭제할 수도 없으므로 (이것도 차단됩니다) 어떻게 닫을 수 있습니까?
(궁금 사람, 처음부터이 문제를 방지하기 위해, 당신은
색인화가 죽는 folllowing :
mydb.onversionchange = function(event) {
mydb.close();
};
원래의 게시물을 할을 가지고있는 경우 개방되지된다 나는 (실수로) 틀린 버전으로 열어 보려고한다. 내가 알 수있는 한, 최신 버전의 DB를 indexedDB에 요청할 방법이 없습니다. 따라서 다음 코드를 두 번 실행하려고하면 데이터베이스가 파괴되어 열리지 않습니다.
오류가 발생하지 않거나 오류가 발생하지 않습니다. 그냥 내 chrome.runtime.onInstalled.addListener
에 자동으로
var db = null;
//Note, no version passed in, so the second time I do this, it seems to cause an error
var req = indexedDB.open("test");
req.onsuccess = function(event) { console.log("suc: " + event.target.result.version); db = event.target.result; };
req.onerror = function(event) { console.log("err: " + event); };
req.onupgradeneeded = function(event) { console.log("upg: " + event.target.result.version); };
//We're doing in interval since waiting for callback
var intv = setInterval(
function()
{
if (db === null) return;
clearInterval(intv);
var req2 = indexedDB.open("test", db.version + 1);
req2.onsuccess = function(event) { console.log("suc: " + event.target.result.version); };
req2.onerror = function(event) { console.log("err: " + event); };
req2.onupgradeneeded = function(event) { console.log("upg: " + event.target.result.version); };
},
50
);
그 코드의 모든 앉아있다. 그래서 내 앱을 업데이트하면 다시 호출됩니다. indexedDB.open("test")
을 새 버전으로 전달하지 않고 setInterval 함수를 다시 실행하면 모든 것이 사용할 수 없게되고 "테스트"를 다시 열 수 없게됩니다. 데이터베이스를 열기 전에 데이터베이스의 버전에 대해 indexedDB를 쿼리하면 해결할 수 있습니다. 그게 존재합니까?
결코 'onsuccess'를 호출하지 않습니다. 'onblocked' 만 호출하면 에러가 발생합니다 : DOM IDBDatabase Exception 11 –
버전 정보를 전달하지 않아도 콘솔에 'blocked'오류가 출력됩니다. indexedDB.open에? – Josh
또한 http://stackoverflow.com/questions/11898375/how-to-get-objectstore-from-indexeddb/16379163#16379163을 검토하십시오. 그것은 당신을 도울 수 있습니다. 전역 db 변수를 사용하지 마십시오. 콜백에서만 액세스 할 수 있습니다. 이렇게하면 차단 문제가 해결 될 것입니다.indexedDB 디자이너는 콜백 패턴을 사용하여 비동기 함수 호출을 허용하므로 전역 db 변수를 사용하려고하면 두통이 발생합니다. – Josh