2012-06-26 60 views
1

在Firefox中。初始化(一次)IndexedDB deleteDatabase不重置版本

var r, dbname = 'a1', db = mozIndexedDB; 

首先,

try { r = db.open(dbname, 5); } catch (ex) { console.log(ex); } 
r.onupgradeneeded = r.onsuccess = r.onblocked = r.onerror = function (e) { console.log(e); }; 

你被解僱的應該是兩個事件。然後關閉數據庫,

r.result.close() 

最後,刪除數據庫,

try { r = db.deleteDatabase(dbname); } catch (ex) { console.log(ex); } 
r.onsuccess = r.onerror = r.onblocked = function (e) { console.log(e); }; 

成功刪除。然而,當我開始運行第一步scrip(打開數據庫)時,'onupgradeneeded'不會被觸發,並且在它被刪除之前的版本中打開數據庫。它是錯誤的,還是我做錯了?

謝謝。

回答

1

你似乎沒有做錯什麼。對於它的價值,我相信deleteDatabase實現在FF中是相對較新的,所以也許你找到了一個bug。

有一件事我會嘗試是先inspect,然後重新啓動瀏覽器之前物理刪除IndexeDB,支持.sqlite數據庫文件。這可能是一個緩存的事情。下面這些文件的路徑。

在PC上:

C:\ Users \用戶名\ AppData \漫遊\ Mozilla的\火狐\ Profiles文件\ < *>默認\ IndexedDB的

在Mac上。

/用戶/用戶名/庫/應用程序\ 支持/火狐/概況/ < *>。默認/索引資料/

在有數據庫版本.sqlite文件的表稱爲database,有兩列,名稱和版本。您的數據庫應該在該表中,並應列出版本號。

刪除數據庫應該刪除該行。如果沒有,我相信你發現了一個錯誤。

出現最壞的惡化,刪除整個目錄中的indexedDB配置文件夾並重新安裝以驗證新的安裝工程。

+3

今天我發現它是我造成這種奇怪的行爲,而不是Firefox。我使用sqlite數據庫查看器大概鎖定sqlite文件和Firefox無法重置版本。 每當我退出我的sqlite查看器,上面的代碼(和我的測試)開始正常工作! 認爲它仍然很奇怪,Firefox不會觸發/不拋出任何錯誤。 – David

+0

非常有趣。也很有意義。感謝您的回覆,我相信其他人會在某個時候遇到這個問題,以及IDB也會加快步伐。 – buley

+1

如果您可以嘗試查看您是否仍然看到相同的行爲,我們將非常感激。我們確實應該發射一個「錯誤」事件。自deleteDatabase最初實施以來,我們已經修復了一些錯誤,可能包括這一錯誤。如果您仍然能夠在夜間生成中重現錯誤,請提交錯誤,並確保它得到修復。 –