zusammenführen Mit WAL (Write-Ahead-Logging) aktiviert in SQLite 3.7 (das ist die Standardeinstellung für Core Data auf iOS 7), wie füge ich den Inhalt aus der -wal-Datei wieder ein die Hauptdatenbankdatei?Wie Inhalte von SQLite 3.7 WAL-Datei in Hauptdatenbankdatei
Antwort
Führen Sie eine checkpoint aus, d. H. Führen Sie PRAGMA wal_checkpoint aus.
in der Befehlszeile, dies zu tun:
sqlite3 MyDatabase.sqlite
VACUUM;
- STRG + D, um die SQLite-Konsole zu beenden.
Fertig!
Die -wal-Datei sollte jetzt eine Größe von 0 haben und alles sollte in Ihrer Hauptdatenbankdatei sein.
In diesem Thread werden zwei Lösungen vorgeschlagen: (1) PRAGMA wal_checkpoint (2) VACUUM und Ausgang. Ich arbeite auch mit Core Data. Meine Haupt-SQLite-Datei war 46 MB und meine -wal-Datei war eine satte 1,2 GB. Meine Ergebnisse: PRAGMA wal_checkpoint oder PRAGMA wal_checkpoint (1) haben keine Wirkung. VACUUM reduzierte die Größe der -wal-Datei von 1,2 GB auf 40,8 MB und reduzierte den Haupt-SQLite von 46 auf 40,5 MB. Wiederholte Ausführungen beider Befehle führten nicht zu weiteren Reduzierungen. Beim Beenden der sqlite3-Konsole wurde die Datei -wal jedoch auf 0 reduziert, wie Johannes sagte. –
@JerryKrinock Hey Jerry, schön, von dir zu hören. Das ist wirklich interessant! Vielleicht möchten Sie die Leute auf der sqlite-Mailingliste darüber befragen und bitte aktualisieren Sie Ihren Kommentar, wenn Sie herausfinden, warum das passiert. –
Beim Terminal Run 'sqlite3 db.sqlite' vergewissern Sie sich, dass das Verzeichnis' -wal' Datei enthält, führen Sie 'PRAGMA wal_checkpoint' aus und beenden Sie die db mit' ctrl + d' –