2017-03-02 5 views
1

Ich löschte Daten aus der SQLite-Datenbanktabelle. Wenn Sie die Datenbankdatei in einem beliebigen SQL-Manager (z. B. SQLiteStudio) öffnen, sind gelöschte Daten nicht vorhanden, aber wenn Sie die Datenbankdatei in einem Texteditor (z. B. notepad ++) öffnen, sind gelöschte Daten sichtbar. Daher gibt es eine Chance zur Wiederherstellung Daten usw.SQLite gelöschte Daten bleiben in der Datenbank Binärdatei

Beispiel:

Im ersten Bild wird SQLiteStudio die gelöschten Kunden zeigt „Stan“ nicht gesehen. Aber die in Notepad ++ geöffnete Binärdatei zeigt den Kunden "Stan".

Kann jemand gelöschte Daten aus SQLite-Binärdateien verschwinden lassen?

SQLiteStudio showing that deleted customer "Stan" is not seen

Binary file open in Notepad++ shows customer "Stan"

Antwort

2

Es ist ein normales Verhalten für die meisten Datenbanken. SQLite ist keine Ausnahme. Meistens bevorzugen die Designer Geschwindigkeit gegenüber Fragmentierung.

Um die Daten vollständig aus Ihrer Datei verschwinden zu lassen, müssen Sie Ihre Datenbank vacuum.

Sie können Ihre Datenbank mit der Option pragma auto_vacuum=FULL erstellen, um die Datenbank selbst zu vakuumieren.

1

Um dies zu verhindern, führen PRAGMA secure_delete = ON:

Wenn secure_delete eingeschaltet ist, SQLite gelöschte Inhalte mit Nullen überschrieben. Die Standardeinstellung für secure_delete wird durch die Option SQLITE_SECURE_DELETE zur Kompilierungszeit festgelegt und ist normalerweise deaktiviert. Die Einstellung off für secure_delete verbessert die Leistung, indem die Anzahl der Festplatten-E/A reduziert wird. Anwendungen, die keine forensischen Spuren hinterlassen möchten, nachdem Inhalt gelöscht oder aktualisiert wurde, sollten das Pragma secure_delete vor dem Löschen oder Aktualisieren aktivieren oder andernfalls VACUUM nach dem Löschen oder Aktualisieren ausführen.

+0

Genau das, was ich gesucht habe! – stanislavr

Verwandte Themen