InvalidStateError beim Öffnen von IndexedDB in Firefox

8

In Firefox 17.0.1, wenn ich versuche, die IndexedDB Datenbank zu öffnen, zeigt mir Firebug-Konsole eine InvalidStateError Ausnahme. Auch das request.onerror -Ereignis wird ausgelöst, aber event.target.errorCode ist undefiniert .

%Vor%

Hat jemand Erfahrung mit IndexedDB in Firefox?

Aktualisieren

Firefox 18.0.1 hat das gleiche Verhalten. Komplette Quelle .

    
Václav Dajbych 20.12.2012, 12:36
quelle

3 Antworten

3

Ich antworte, weil das Problem immer noch besteht (in Firefox 54). Dies geschieht, wenn Sie:

Um zu verhindern, dass InvalidStateError funktioniert, funktioniert nicht (aber nützlich für andere Fehler, z. B. deaktivierte Cookies), stattdessen benötigen Sie event.preventDefault ( ) . Ja, ich weiß, zu leicht um wahr zu sein. :)

%Vor%

Kudos gehen zu Ссылка .

    
RiZKiT 14.08.2017 10:51
quelle
1

Ich bin mir ziemlich sicher, dass der Fehler ein Versionsfehler ist, was bedeutet, dass die aktuelle Version der Datenbank höher ist als die Version, mit der Sie die Datenbank öffnen. Wenn Sie in event.target.error nachsehen, werden Sie feststellen, dass der Name "VersionError" enthält.

Eine andere Möglichkeit ist, dass Sie "AbortError" sehen, was bedeuten würde, dass die VERSION_CHANGE Transaktion abgebrochen wurde. Das bedeutet, dass beim Ereignis onupgradeeneted ein Fehler aufgetreten ist, der einen Abbruch verursacht hat. Sie könnten dies erhalten, wenn Sie einen Objektspeicher erstellen, der bereits existiert.

Ich sehe keine anderen Möglichkeiten als diese auch, wenn Sie nicht mehr Informationen über den Fehler liefern, den Sie bekommen.

    
Kristof Degrave 11.02.2013 15:49
quelle
0

Sie müssen den Objektspeicher in einer separaten Transaktion erstellen, Sie lassen die geöffnete Datenbank und die Objektspeichertransaktion in dasselbe Ereignis übergehen.

Sie können auch nicht beide autoincrement und a path als Optionen für Ihren Objektspeicher haben. Sie müssen das eine oder andere auswählen.

Hier ist der Code, der dein Beispiel voranbringen wird:

%Vor%

Wenn Sie anfangen, stecken zu bleiben, können Sie sich einen Indexeddb-Code ansehen, den ich für das Firefox-Addon-SDK geschrieben habe. Der Code ist komplizierter als das, was Sie benötigen, aber Sie werden in der Lage sein, alle Ereignisse, Fehler und die Reihenfolge der Transaktionen zu sehen, die passieren müssen. Ссылка

Viel Glück!

    
Bryan Clark 13.02.2013 20:13
quelle

Tags und Links