我正在使用polyfill indexedDBShim Here,我有一个错误,我不知道如何调试它或知道如何解决它。
我的错误:
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 );
};
有人可以帮我吗?
答案 0 :(得分:2)
这个垫片最终导致了一些糟糕的事情,让我告诉你! (我们收到很多问题。)
首先,版本既不应该是字符串也不应该是浮点数。它们应该是每个规格大于零的整数。所以这不对。
Version
数字是 正整数大于零。程序员可以设置一个 通过打开现有数据手动或隐含地获取数据库的版本 版本号比数据库大的数据库名称 包含的内容。虽然数据库的名称永远不会改变,但数据库 版本一直在变化。指定大于当前的版本允许我们输入a “版本更改”事务,用于启用数据库架构更改。 如果未指定版本,则数据库将以最多打开 最近的数据库版本。
数据库版本号存储为8-byte "int long long" 在IDB的底层C编程语言实现中 可以在
1
和18446744073709551615
之间的任意位置编号。
以下是我使用常规IDB调试/解决的方法:在没有版本的情况下打开数据库。这应该使用最新版本打开连接,响应对象将为您提供当前版本。比较两者以找到您的应用程序错误。
值得注意的是,数据库打开请求应提供一些属性,以帮助您在versionchange
event.newVersion
和event.oldVersion