Zimmer kann nicht überprüfen Sie die Integrität der Daten
Bin ich immer diese Fehlermeldung beim ausführen des Programms mit Datenbank
Room cannot verify the data integrity. Looks like you've changed schema but forgot to update the version number.
You can simply fix this by increasing the version number.
Scheint es, wir müssen Sie aktualisieren die Datenbank-version, aber von wo, wir können es im Zimmer?
InformationsquelleAutor Ravi Rupareliya | 2017-05-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Ihr zum ersten mal auf diese Nachricht, Sie werden wahrscheinlich gegen eine unveröffentlichte version von der Datenbank. Wenn das der Fall ist, die meisten wahrscheinlich, dass Sie sollten nicht erhöhen Sie die Datenbank-version. Einfach clearing-app-Daten verschieben, die Sie übergeben die Ausnahme.
Wenn Sie dies nicht tun, erhöht sich der Datenbank (empfohlen):
Sollten Sie löschen Sie die Anwendung app-Daten von Android-Einstellungen. Sie könnten alternativ in der Lage sein, deinstallieren Sie die Vorherige app-version und installieren Sie dann die neue version zu erhalten, bestanden die Ausnahme. Dieser zweite Ansatz nicht funktioniert, unter bestimmten Bedingungen (wenn beispielsweise ermöglicht backup aktiviert ist)
Da die clearing-Anwendung Daten, die immer funktioniert, nehme ich diese Strecke jedes mal.
Wenn Sie das tun, erhöht sich der Datenbank-version:
Müssen Sie schreiben, Datenbank, migration, code-Konto, um änderungen an der Datenbank-schema. Sehen hier für Informationen über migration.
Alternative zum schreiben der Datenbank-Migrations-code ist der Aufruf
fallbackToDestructiveMigration
auf die Raum-Datenbank-generator. Dies ist wahrscheinlich nicht eine gute Idee. Vergessen zu entfernen, dies nennen und dann vergessen zu aktualisieren, die Datenbank zu Datenverlusten führen kann.Wieder, weder erhöht die Datenbank-version noch zurück fallen zu destruktiven migration ist erforderlich, wenn in der vorherigen Datenbank-schema wird nicht live in der wildnis.
In der version
1.0.0-rc1
Raum die einzige Sache, die für mich gearbeitet wurde, erhöhen Sie die Datenbank-version.Ich hatte android:allowBackup="true" in meine AndroidManifest.xml welcher verhinderte, dass die Daten nicht gelöscht, selbst nachdem die app deinstalliert wurde. Ich setzen Sie dieses Attribut auf "false" und dann die app neu installiert, das hat geholfen, um loszuwerden, das problem. Beachten Sie, dass true ist der Standardwert für allowBackup, so, wenn Sie nicht verwenden es überhaupt, könnte es noch verursachen die Daten aufbewahrt werden.
dieser Kommentar jetzt verdient eine Antwort.
Sehr gut erklärt, danke.
InformationsquelleAutor methodsignature
Durch Standard-Android-manifest `android:allowBackup="true", Die es erlauben, apps zu bestehen, Ihre SQLite-DB auf Neuinstallation.
Angenommen, Ihr
DATABASE_VERSION
war zunächst 3 und dann entscheiden Sie, zu reduzieren, DB-version von 3 auf 1.Können Sie erreichen es wie folgt
Es ist eine gute Praxis zu halten
DATABASE_VERSION
als konstant.InformationsquelleAutor Hitesh Sahu
Seine Sehr einfache, wie gezeigt, in der log -
Einfach gehen Sie zu Ihrem Datenbank-Klasse und aktualisieren Ihre DB-version durch die Erhöhung 1 aus aktuelle.
It seems we need to update database version
. Aber ich war nicht immer, wo diese version erwähnt wurde. Anyways danke für den Hinweis.InformationsquelleAutor Aniruddh Parihar
Aniruddh Parihar 's Antwort gab mir den Tipp und es gelöst.
Suche nach einer Klasse, wo Sie haben extended
RoomDatabase
. Dort finden Sie die version wie folgt :erhöhen Sie einfach die version und das problem ist gelöst.
InformationsquelleAutor Ravi Rupareliya
In Meinem Fall ContentProvider und Zimmer-Datenbank arbeiten zusammen, so entfernen Sie zunächst alle Rückruf der ContentProvider alle über die Anwendung mit der Datenbank-Klasse, die erweitert SqlLiteOpenHelper Klasse
InformationsquelleAutor chaman
In meinem Fall war ich über eine Transaktion innerhalb der migration und der Raum konnte nicht aktualisiert werden die hash unter Verwendung einer Migrations-Helfer
Im Beispiel oben ist es nicht die Transaktion, das ist ein problem. Vergessen Sie set-Transaktion erfolgreich, bevor es zu beenden: <pre><code> Datenbank.beginTransaction() Datenbank.setTransactionSuccessful() Datenbank.endTransaction() </code></pre>
InformationsquelleAutor JARP
In meinem Fall hatte ich eine AppDatabase Klasse.
Ich aktualisiert Versionsnummer und es löste das problem.
Problem entstand, weil ich noch eine Eigenschaft in der SongInfo Klasse und habe vergessen zu aktualisieren, die version-Nummer.
Hoffe, es hilft jemand.
InformationsquelleAutor Harry .Naeem
Dieses Problem tritt meist in der Entwicklung.
Wenn Sie Ihre schema-D. H., umbenennen/hinzufügen/ändern Ihrer Klasse, in der Tabelle entity-Integrität zwischen dem beenden der db in Ihrem vorherigen build Konflikte mit der neuen build.
Nun, Die alte db nicht in Konflikt mit der neuere.
was ist die Ausnahme? bitte setzen Sie das Protokoll, um einzugrenzen, das Problem.
Danke, alles ist OK jetzt. Ich lese über
android:allowBackup="true"
und verwenden Sie es mit bedachtAlso, was über allowBackup? Könnten Sie bitte erleuchte uns mit deiner Weisheit?
man kann darüber Lesen, dass hier, Warum du so wütend?
InformationsquelleAutor sudesh
Wenn Sie ein Upgrade Zimmer version 1.0.0-alpha9 von der alten version, dann besuchen Sie bitte die unten Artikel. Sehr Guter Artikel für die Migration von der alten version auf 1.0.0-alpha9-version.
https://medium.com/@manuelvicnt/android-room-upgrading-alpha-versions-needs-a-migration-with-kotlin-or-nonnull-7a2d140f05b9
Im Zimmer Neue Version 1.0.0-alpha9 Raum fügt Unterstützung für die not NULL-Einschränkung.
Das wird sich ändern das schema, dass Raum erzeugt. Da es änderungen am schema, es ändert sich auch die identityHash von der DB und von Raum eindeutig zu identifizieren, jede DB-version. Daher brauchen wir eine migration
InformationsquelleAutor Bhargav Pandya
Überprüfen Sie die identityHash Ihrer alten json-Datei und das neue json-Datei in apps\schema-Ordner.
Wenn die identityHash anders ist, wird es geben, den Fehler zu finden. Finden Sie heraus, was Sie verändert haben durch Vergleich der beiden json-Dateien, wenn Sie nicht wollen, etwas zu ändern.
Stellen Sie sicher, Sie haben exportSchema = true.
json-schema-Datei:
code:
InformationsquelleAutor live-love