我在看似任意的时间在一个相对较大的项目中间歇性地收到此错误消息(这让我怀疑某处存在竞争条件......),所以我很遗憾没有一个最小的例子来说明这个问题,因为我不明白根本原因。基本上,有时我会收到event.target.webkitErrorMessage
“内部错误检查密钥存在”的错误信号。但我真的不明白这个错误消息是什么意思。
谷歌搜索这个短语只返回 7 个结果(尽管一旦谷歌和其他人发现这个问题会更多)。这些结果要么是 Chromium 源代码,要么是关于向 Chromium 添加更详细的错误消息的错误报告。由于我对 Chromium 的 IndexedDB 后端实现并不十分熟悉,我很难理解的一件事是这个错误消息在前端 JavaScript 代码中的含义。例如,什么样的 JavaScript 错误会导致该错误消息?
有问题的代码似乎在 Firefox,FWIW 中运行良好。
下面的编辑
我也很少将 null 作为游标返回,以响应对openCursor
我知道是真正键的键的请求。这也是不一致的——它发生在不同的键上,而且很少发生。而且它也只在 Chrome 中。很奇怪。
而且我不确定它是否相关,但这一切都发生在一个大型事务update
中,两个对象存储中有许多 s (这些是导致 nullopenCursor
问题的那些)和add
另一个对象存储中的许多 s (这似乎是源“内部错误检查密钥存在”错误)。我将尝试做一个最小的例子并进一步调查,但不管结果如何,我仍然想知道我原来的问题的答案,这就是“内部错误检查密钥存在”的具体含义。
另一个编辑
在玩了一些之后,我遇到了另一个奇怪的瞬态错误消息,“内部错误:执行 put/add 的后备存储错误”。我也很好奇这对我的 JavaScript 意味着什么。
此外,我确认所有这些问题都是 Chrome 26 的新问题(并且仍然存在于 Chrome 27 中)。降级到 Chrome 25 使所有这些问题都消失了......所以也许这一切都只是 Chrome 中的一些错误......
再编辑一次
所有这些问题似乎只发生在 Linux 中(我使用的是 Ubuntu 12.10)。在带有 Chrome 26 的 Windows XP VM 中,我无法重现任何这些错误。我提交了一份错误报告,因为越来越清楚这一切都是由于一些错误造成的,但我不确定我是否已经将问题缩小到足以帮助找到解决方案的程度。