[英]IndexedDBShim polyfill version mismatch
我在這里使用polyfill indexedDBShim,但出現錯誤,也不知道如何調試或解決問題。
我的錯誤:
unable to open database, version mismatch, '1' does not match the currentVersion of '1.0'
在與indexedDB兼容的瀏覽器上運行良好,但是例如當我在Safari上嘗試時,出現此錯誤。
我只是這樣做:
var request = indexedDB.open( 'products', 1 );
request.onupgradeneeded = function( e ) {
console.log('Upgrading...');
var thisDB = e.target.result;
if ( !thisDB.objectStoreNames.contains( "devices" ) ) {
thisDB.createObjectStore( "devices", { keyPath: "title" } );
thisDB.createIndex( "title", "title", { unique: true } );
}
};
request.onsuccess = function( e ) {
console.log('Success!');
that.db = e.target.result;
//that.saveProducts( data );
};
request.onerror = function( e ) {
console.log('Error!');
console.dir( e );
};
有人可以幫我嗎?
此墊片最終會導致一些不好的事情,讓我告訴您! (我們對此有很多疑問。)
首先,版本不應為字符串或浮點數。 每個規格它們應為大於零的整數。 所以這是不對的。
Version
號是大於零的正整數。 程序員可以通過打開現有數據庫名稱(其版本號大於數據庫包含的版本號)來手動或隱式設置數據庫的版本。 雖然數據庫名稱永遠不會更改,但數據庫版本始終會更改。指定一個比當前版本大的版本,我們可以輸入一個“版本更改”事務來啟用數據庫模式更改。 如果未指定任何版本,則數據庫將使用最新的數據庫版本打開。
數據庫版本號在IDB的基礎C編程語言實現中存儲為8字節“ int long long” ,並且可以在
1
到18446744073709551615
之間的任何位置進行18446744073709551615
。
這是我使用常規IDB進行調試/解決的方法:打開沒有版本的數據庫。 這應該使用最新版本打開連接,並且響應對象將為您提供當前版本。 比較兩者以查找您的應用程序錯誤。
值得注意的是,數據庫打開請求應提供幾個屬性,以幫助您在進行版本versionchange
時保持干凈且一致的應用程序狀態: event.newVersion
和event.oldVersion
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.