Получавам това съобщение за грешка периодично в рамките на сравнително голям проект в привидно произволни моменти (което ме кара да подозирам някъде състояние на състезание...), така че за съжаление нямам минимален пример, илюстриращ този проблем, тъй като не разбирам първопричина. По принцип понякога получавам сигнал за грешка, където event.target.webkitErrorMessage
е „Съществуване на ключ за проверка на вътрешна грешка“. Но наистина не разбирам какво трябва да означава това съобщение за грешка.
Гугъл за тази фраза връща само 7 резултата (въпреки че ще бъде повече, след като Google и други намерят този въпрос). Тези резултати са или изходен код на Chromium, или доклади за грешки относно добавянето на по-подробни съобщения за грешка към Chromium. Тъй като не съм добре запознат с изпълнението на бекенда на IndexedDB на Chromium, едно нещо, което се мъча да разбера, е какво означава това съобщение за грешка по отношение на предния JavaScript код. Например, какви видове грешки в JavaScript могат да доведат до това съобщение за грешка?
Въпросният код изглежда работи добре във Firefox, FWIW.
РЕДАКТИРИ ПО-ДОЛУ
Също така, по-рядко, получавам нула като курсор в отговор на openCursor
заявка за ключ, за който знам, че е истински ключ. Това също е непоследователно - случва се за различни ключове и рядко. Освен това е само в Chrome. Много странно.
И не съм сигурен дали е уместно, но всичко това се случва в рамките на голяма транзакция с много update
s в две хранилища на обекти (това са тези, водещи до null openCursor
проблеми) и много add
s в друго хранилище на обекти (това изглежда е източник на грешката „Съществуване на ключ за проверка на вътрешна грешка“). Ще се опитам да направя минимален пример за това и да проуча по-нататък, но независимо от това как ще се развие, все пак бих искал да знам отговора на моя първоначален въпрос, което е какво конкретно означава „съществуване на ключ за проверка на вътрешна грешка“.
ДРУГА РЕДАКЦИЯ
След като си поиграх още малко, попаднах на друго странно съобщение за преходна грешка, „Вътрешна грешка: грешка при архивиране на магазина при изпълнение на put/add“. Също така бих бил любопитен какво означава това за моя JavaScript.
Освен това потвърдих, че всички тези проблеми са нови за Chrome 26 (и остават в Chrome 27). Понижаването до Chrome 25 кара всички тези проблеми да изчезнат... така че може би всичко това е просто от някакъв бъг в Chrome...
ОЩЕ ЕДНА РЕДАКТИРАНЕ
Всички тези проблеми изглежда се случват само в Linux (използвам Ubuntu 12.10). В Windows XP VM с Chrome 26 не мога да възпроизведа нито една от тези грешки. Изпратих доклад за грешка, тъй като става все по-ясно, че това е всичко това се дължи на някакъв бъг, но не съм сигурен дали стесних проблема достатъчно, за да помогна да намеря решение.
onerror
обратно извикване наIDBRequest
? Проверили ли сте същоrequest.error
илиevent.target.error
? Единствената валидна грешка в API на IndexedDB еConstraintError
, доколкото си спомням. - person Kyaw Tun   schedule 06.04.2013onerror
обратното извикване заIDBRequest
.event.target.error.name
казва, че еUnknownError
(не мисля, чеConstraintError
е единствената възможна стойност, тъй като в допълнение към тази виждам същоAbortError
s за заявки след прекратяване на транзакцията).event.target.webkitErrorMessage
предоставя някои допълнителни подробности, но както описах в публикацията си, грешката му съобщенията не изглеждат полезно документирани. - person dumbmatter   schedule 06.04.2013UnknownError
са IO грешка, нали? Също така срещнах проблем само с Chrome при големи или множество транзакции. Ако мога да ги възпроизведа, ще подам грешка в проекта на Chromium. Засега все още се опитвате да възпроизведете под формата на единичен тест. Въпреки това може лесно да се възпроизведе в приложението. Заобиколното решение е толкова лесно, колкото да направите транзакцията кратка. - person Kyaw Tun   schedule 06.04.2013