Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Exception WinJS/IE 10 IndexedDB在以0版本打开时引发不正确的异常_Exception_W3c_Winjs_Indexeddb_Internet Explorer 10 - Fatal编程技术网

Exception WinJS/IE 10 IndexedDB在以0版本打开时引发不正确的异常

Exception WinJS/IE 10 IndexedDB在以0版本打开时引发不正确的异常,exception,w3c,winjs,indexeddb,internet-explorer-10,Exception,W3c,Winjs,Indexeddb,Internet Explorer 10,根据的最新版本,使用

根据的最新版本,使用<1版本调用
indexedDB.open
,例如
window.indexedDB.open('somename',0)
,应具有以下行为:

DOMEException TypeError版本的值为0(零)或负值 号码

然而,我注意到WinJS似乎抛出了类型为
InvalidStateError
的错误异常

我是否误解了w3规范,或者这是(我假设它是IE10引擎)实现中的一个缺陷


我之所以这样说,是因为我花了一段时间才将看到的错误(
InvalidState
)与使用无效版本号的代码连接起来——希望其他人能够避免我的错误

无法打开版本为0的数据库。它需要至少为1或更高。说明书上说:

首次创建数据库时,其版本为0


因此,当您试图打开一个尚不存在的数据库时,将创建该数据库并获取版本0。创建数据库后,将调用onupgradeRequired方法,以便您可以定义结构。在这里,您将看到旧版本是0,新版本是提供的版本或1(如果您没有提供版本)。

我在IE10中也遇到了同样的问题。我所做的就是使用前缀'msIndexedDB',open函数将DB name作为唯一的参数。因此,他们已恢复使用已弃用版本的open。我不知道为什么这对他们来说有很好的软件工程意义,因为它对我来说没有意义。

是的,我知道--问题是关于当你尝试调用时抛出的异常。open('foo',0)--它抛出的异常与规范所说的应该是可能的不同,IE 10没有完全实现所描述的规范。缺少对象存储上的唯一属性和索引上的多条目功能。感谢您的解释。这似乎是一个相当重要的违反规范的行为,这就是为什么我认为这是一个缺陷。我没有意识到一些缺失的功能——独特的约束对我来说似乎是一件大事,不是吗?你能解释一下“索引上的多条目功能缺失”是什么意思吗?这是不是意味着一个对象存储不能有多个索引,或者不能有一个由复合属性组成的索引?唯一的功能是在IE中实现的,我错了,但它是autoIncrement属性,你不能参考。该功能是存在的,但不是用于事后检查多条目部分的属性:在ie中,如果在数组上放置索引,则不能打开多条目,以便可以在数组内搜索。它将只是作为一个正常的指数,明白了-我感谢澄清!