Qtquick LocalStorage-Datenbankversion Mismatch (fehlende "Version" -attribut in INI-Datei)

StackOverflow https://stackoverflow.com//questions/23021373

  •  21-12-2019
  •  | 
  •  

Frage

Ich verwende qtquick / qml / qt5.2.1 auf Android. Ich habe dieses Problem auch auf dem Desktop als Android getestet und ich sehe das gleiche Problem.

Ich verwende LocalStorage, um Anwendungsdaten zu bestehen, nachdem die Anwendung geschlossen wird.

Ich öffne eine Datenbank mit openDatabaseSync:

generasacodicetagpre.

Wenn die Datenbank nicht vorhanden ist und erstellt wurde, wird die Callback-Funktion ausgeführt, und in diesem Fall erstellte ich das Datenbankschema und füllt das anfängliche Datensatz auf.

Das nächste Mal, wenn der Antrag beginnt, möchte ich natürlich die Datenbank wie - aufbewahren und nicht erstellen und nicht neu erstellen.

Das Problem ist, wenn ich die Anwendung neu starte, erhalte ich diesen Fehler:

generasacodicetagpre.

Wenn ich die zu erstellte .ini-Datei inspiriere, in der er erstellt wurde, wenn die Datenbank erstellt wurde, um das erste Mal zu erfahren, sehe ich das:

generasacodicetagpre.

Sie können ein Problem eindeutig sehen, dass das Attribut "Version" leer ist.

Wenn die Anwendung startet, vergleicht er die angeforderte Version "1.0" gegen diese leere Zeichenfolge "" und schlägt fehl.

Ich kann es fälschen, um es natürlich zur Arbeit zu bringen, indem Sie die Version als "" angeben, oder indem Sie die Ini-Datei beheben - das zumindest sagt, dass der Code ansonsten korrekt ist - aber eindeutig ist das keine Lösung. .

Hat ich also etwas vermisst oder ist das ein Qt-Fehler?

War es hilfreich?

Lösung

Sie können die Datenbankversion nach dem Erstellen einstellen:

generasacodicetagpre.

Da die Callback-Funktion nur aufgerufen wird, existiert die Datenbank nicht, und die ChangeVersion-Funktion funktioniert nur, wenn die aktuelle Version "" (Ansonsten, Ausnahme wird ausgelöst), glaube ich, dass es sicher ist, es zu verwenden.

edit: vielleicht ist dies das beabsichtigte verhalten ... von Localstorage-Quellcode , Zeile 700:

generasacodicetagpre.

Also, vielleicht müssen Sie wirklich die DB-Version einstellen, nachdem Sie Ihre Tabellen erstellt haben ... Bevor Sie dies beim Rückruf tun, ist es nur eine leere Datenbank und sollte nicht wirklich eine Version haben.

Andere Tipps

Stellen Sie die genannten Attribute in Ihrem obigen Code ein.

generasacodicetagpre.

wo 'Kmusicplay' ist Appname, '0.1' ist Version, 'KmusicPlay App Ubuntu' ist App-Beschreibung und '10000' ist die Größe der Datenbank

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top