User Tools

Site Tools


de:manual:advanced:map_tools:corrupted_sqlite

Reparatur einer beschädigten SQLite Datenbank


SQLite Datenbanken auf Android Geräten sind an sich eine sehr robuste Sache. Leider können auch diese Datenbanken, selten aber doch, beschädigt werden. Dies kann passieren wenn Locus, zB mir einem Taskkiller, unsauber geschlossen wird oder ein sonstiger Fehler beim schließen der Datenbank auftritt. Daraus resultierend kann Locus unter Umständen die Datenbank anschliessend nicht mehr öffnen oder die Datenbank löscht sich von selbst - dies betrifft sowohl heruntergeladene Karten als auch die Datenbank mit den Punkten/Tracks da beide auf SQLite beruhen. Mit etwas Glück lassen sich solche beschädigte Datenbanken wieder reparieren.

So funktioniert das:

Schnelle Lösung für MS Windows

Dieser Lösungsweg betrifft eine ev. beschädigte 'tracks.db' Datei die Sie im Locus Verzeichnis Locus/data/database finden:

  1. Laden Sie diese .ZIP Datei herunter entzippen Sie die Datei
  2. Kopieren Sie die tracks.db in das Verzeichnis mit dem entpackten Tool
  3. Starten Sie fix_tracks.bat
  4. Kopieren Sie die reparierte tracks.db wieder an ihren angestammten Platz (z.B. in den Locus/data/database Ordner)

Allgemeiner Lösungsweg

Für die Durchführung der nachfolgenden Anweisungen müssen Sie auf Kommandozeilenebene arbeiten ! :

  • Kopieren Sie die beschädigte Karte bzw. Datenbank auf Ihren PC
  • Downloaden Sie sqlite-tools von http://www.sqlite.org/download.html
  • Entkomprimieren Sie die Shell und kopieren Sie die beschädigte Datenbank in jenes Verzeichnis in dem sich auch die Datei sqlite3.exe befindet
  • Starten Sie eine Dos-Shell mit “cmd” , wechseln Sie in das Verzeichnis mit der beschädigten Datenbank und sqlite3.exe
  • geben Sie folgenden Befehl auf der Kommandozeile ein
>sqlite3.exe filename.db "PRAGMA integrity_check"

um die Datenbank zu prüfen. Hier wedern Sie wahrscheinlich folgende Fehlermeldung sehen: ERROR: database disk is malformed.

  • geben Sie folgenden Befehl auf der Kommandozeile ein
>sqlite3.exe filename.db ".dump" | sqlite3 new.db
  • Wenn Sie die Datei new.db nun prüfen so sollten Sie ein “OK” als Antwort erhalten.
  • nun ändern Sie den Namen der Datei new.db in jenen namen den die ursprüngliche Datei hatte und kopieren sie diese Datei an Ihren ursprünglichen Ort am Smartphone/Tablet (also z.B. eine reparierte tracks.db or waypoints.db in den Locus/data/database Ordner)

Hier ein Beispiel:

Leider ist das nicht immer machbar. Der einfachste und sicherste Weg ist es regelmässige Sicherungen anzulegen und diese im Fehlerfall zu re-importieren.

de/manual/advanced/map_tools/corrupted_sqlite.txt · Last modified: 2019/01/22 09:20 by mstupka