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 .
Hat jemand Erfahrung mit IndexedDB in Firefox?
Aktualisieren
Firefox 18.0.1 hat das gleiche Verhalten. Komplette Quelle .
Ich antworte, weil das Problem immer noch besteht (in Firefox 54). Dies geschieht, wenn Sie:
Um zu verhindern, dass InvalidStateError funktioniert, funktioniert
Kudos gehen zu Ссылка .
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.
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!
Tags und Links javascript firefox indexeddb