2012-08-02 4 views
2
을 데이터베이스를 색인화 삭제할 때

내가 구글 크롬 버전에서 색인화 된 데이터베이스를 삭제하려고 할 때 오늘 나는 오류를 받기 시작했습니다 이후 21 나는 데이터베이스를 삭제하는 명령을 실행하면 :오류 구글 크롬 21 문제

window.webkitIndexedDB.deleteDatabase(dbName); 

다음 이벤트가 발생합니다 :

IDBVersionChangeEvent 
bubbles: false 
cancelBubble: false 
cancelable: false 
clipboardData: undefined 
currentTarget: IDBVersionChangeReques 
defaultPrevented: false 
eventPhase: 2 
returnValue: true 
srcElement: IDBVersionChangeRequest 
target: IDBVersionChangeRequest 
timeStamp: 1343929274696 
type: "blocked" 
version: "" 

추가 정보 : 나는 웹 근로자와 창에서 색인화에 접근하고있다.

답변

0

문제는 웹 근로자에서 액세스하는 데이터베이스에 있었다. 이 코드 줄에서 : 데이터베이스 폐쇄 평소보다 더 많은 시간을 필요로하고 웹 노동자, 당신이 나중에 삭제하려고 할 때 다음 데이터베이스가 잠겨을 닫으면

database.close();//closing the database 
self.close();//closing the web worker 

아마 구글 크롬에 약간의 버그가 있습니다.

웹 작업자를 닫지 않고 대기 모드로 두어 문제를 해결했습니다.

4

어딘가에 해당 데이터베이스에 대한 연결이 열려 있음을 의미합니다. deleteDatabase를 호출하는 탭과 다른 탭에있을 수 있습니다. 이 연결은 deleteDatabase에 대한 호출이 이루어 졌음을 알리고 종료해야한다고 알리는 versionchange 이벤트를받습니다. 데이터베이스가 열릴 때

당신은 핸들러를 추가 할 수 있습니다

request = indexeddb.open("dbname"); 
request.onsuccess = function(event) { 
    db = event.target.result; 
    db.onversionchange = function(event) { 
    event.target.close(); 
    } 
} 
+0

데이터베이스를 삭제하려고하면 onversionchange가 실행되지 않습니다. –

+0

아마도 버그 일 겁니다. 간단한 재현 사례가있는 경우 http://crbug.com/new에 파일을 올릴 수 있습니다. – dgrogan

+0

예 아래에 해결책을 게시 한 웹 작업자로부터 db에 액세스 할 때 Google 크롬에 버그가있을 수 있습니다. –