Hallo zusammen,
 
ich habe noch mal ein wenig herumprobiert. Zunächst habe ich der Karte mit gpart einen neuen Header spendiert. Danach habe ich ddrescue einige Zeit über die Karte laufen lassen, Ergebnis: 99.99 pct rescued. In der Folge habe ich mit testdisk (kompiliert aus den aktuellen Github-Sourcen) die sqlite.db3 kopiert.
Ein
 
sqlite3 ~/Downloads/home/pi/sqlite-dumped.db3 "PRAGMA integrity_check"
 
liefert leider
 
Page 718135: btreeInitPage() returns error code 11
Page 699295: btreeInitPage() returns error code 11
Page 412064: btreeInitPage() returns error code 11
On tree page 370249 cell 18: Rowid 0 out of order
On tree page 370249 cell 17: Rowid 0 out of order
On tree page 370249 cell 16: Rowid 0 out of order
On tree page 370249 cell 15: Rowid 0 out of order
On tree page 370249 cell 14: Rowid 0 out of order
On tree page 370249 cell 13: Rowid 0 out of order
On tree page 370249 cell 12: Rowid 0 out of order
On tree page 370249 cell 11: Rowid 0 out of order
On tree page 370249 cell 10: Rowid 0 out of order
On tree page 370249 cell 9: Rowid 0 out of order
On tree page 370249 cell 8: Rowid 0 out of order
On tree page 370249 cell 7: Rowid 0 out of order
On tree page 370249 cell 6: Rowid 0 out of order
On tree page 370249 cell 5: Rowid 0 out of order
On tree page 370249 cell 4: Rowid 0 out of order
On tree page 370249 cell 3: Rowid 0 out of order
On tree page 370249 cell 2: Rowid 0 out of order
On tree page 370249 cell 1: Rowid 0 out of order
On tree page 370249 cell 0: Rowid 0 out of order
Fragmentation of 412 bytes reported as 0 on page 370249
On tree page 369985 cell 275: Rowid 26718170 out of order
Page 335622: btreeInitPage() returns error code 11
Page 335601: btreeInitPage() returns error code 11
Page 326664: btreeInitPage() returns error code 11
Page 326660: btreeInitPage() returns error code 11
Page 326642: btreeInitPage() returns error code 11
Page 326640: btreeInitPage() returns error code 11
Page 183558: btreeInitPage() returns error code 11
Page 145754: btreeInitPage() returns error code 11
Page 133296: btreeInitPage() returns error code 11
Page 131242: btreeInitPage() returns error code 11
Page 130006: btreeInitPage() returns error code 11
Page 21264: btreeInitPage() returns error code 11
Page 775024: btreeInitPage() returns error code 11
Fragmentation of 384 bytes reported as 0 on page 427549
Page 427482: btreeInitPage() returns error code 11
Page 370242: btreeInitPage() returns error code 11
Page 335617: btreeInitPage() returns error code 11
Page 335612: btreeInitPage() returns error code 11
Page 326678: btreeInitPage() returns error code 11
Page 133332: btreeInitPage() returns error code 11
Page 132755: btreeInitPage() returns error code 11
Page 427473: btreeInitPage() returns error code 11
Page 412090: btreeInitPage() returns error code 11
Page 341941: btreeInitPage() returns error code 11
Page 326667: btreeInitPage() returns error code 11
Page 326622: btreeInitPage() returns error code 11
Page 148619: btreeInitPage() returns error code 11
Page 148612: btreeInitPage() returns error code 11
Page 133328: btreeInitPage() returns error code 11
Page 131207: btreeInitPage() returns error code 11
Page 427494: btreeInitPage() returns error code 11
Page 148621: btreeInitPage() returns error code 11
Page 133324: btreeInitPage() returns error code 11
Page 14360: btreeInitPage() returns error code 11
Page 341881: btreeInitPage() returns error code 11
Page 326606: btreeInitPage() returns error code 11
Page 131196: btreeInitPage() returns error code 11
Error: database disk image is malformed
 
 
Der Tip von
https://stackoverflow.com/questions/18259692/how-to-recover-a-corrupt-sqlite3-database/18260642
liefert leider eine leere DB.
 
Hat evtl. noch jemand eine Idee, was ich versuchen könnte ?
Grüße
 
JD.
 
 
 
 
 
Sent: Thursday, August 05, 2021 at 6:27 PM
From: "Andreas Götz" <cpui...@gmail.com>
To: "volkszaehler.org - users" <volkszaehler-users@demo.volkszaehler.org>
Subject: Re: [vz-users] (Daten-)Rettung sqlite.db3 von SD-Karte
Deine DB ist kaputt und die Daten weg, mehr lässt sich dazu nicht sagen…
 
Viele Grüße,
Andreas
 
Am 05.08.2021 um 18:21 schrieb John Doe <john...@null.net>:
 

Hallo zusammen,
 
kurzes Update:
 
Ich habe mittels testdisk aus der Karte eine sqlite.db3 herausbekommen (via Image-Erstellung der ext4-Partition). Beim Versuch des Zurückspielens nun leider das:
 
pi@raspberrypi:~ $ sudo /var/www/volkszaehler.org/vendor/bin/dbcopy copy -c /etc/dbcopy.yaml
entities: copying 2 rows (overwrite)
 [============================] 100%  < 1 sec/< 1 sec  2 rows
properties: copying 16 rows (overwrite)
 [============================] 100%  < 1 sec/< 1 sec  16 rows
entities_in_aggregator: copying 0 rows (overwrite)
    0 [>---------------------------] < 1 sec 4.0 MiB
data: copying
In AbstractSQLiteDriver.php line 70:
                                                                          
  An exception occurred while executing 'SELECT COUNT(1) FROM ("data")':  
                                                                          
  SQLSTATE[HY000]: General error: 11 database disk image is malformed     
                                                                          
In PDOConnection.php line 90:
                                                                       
  SQLSTATE[HY000]: General error: 11 database disk image is malformed  
                                                                       
In PDOConnection.php line 88:
                                                                       
  SQLSTATE[HY000]: General error: 11 database disk image is malformed  
                                                                       
copy [-c|--config CONFIG] [-b|--batch BATCH] [-k|--keep-constraints] [--] [<tables>...]
 
 
Abfolge:
 
Wie im wiki beschrieben eine sqlite.db3 mit dbcopy create angelegt. Diese mit der sqlite.db3 aus testdisk ersetzt, in der dbcopy.yaml Quelle und Ziel vertauscht und obigen Befehl verwendet.
Könnte da noch was zu retten sein ?
Grüße
 
JD.
 
 
Sent: Wednesday, August 04, 2021 at 9:16 PM
From: "John Doe" <john...@null.net>
To: volkszaehler-users@demo.volkszaehler.org
Subject: [vz-users] (Daten-)Rettung sqlite.db3 von SD-Karte
Hallo zusammen,
 
mitr ist mal wieder eine SD-Karte abgeraucht. Ich habe ein älteres Image der Karte und zwei Backups der sqlite.db3 - ein älteres und ein uraltes.
Aufgrund persönlicher Unzulänglichkeiten hat die tägliche Datensicherung nicht das getan, was ich vorhatte.
Nun meine Frage:
Ich habe ein einem SD-Kartenleser noch Zugriff auf die SD-Karte.
Wenn ich die sqlite.dp3 aus dem Verzeichnis /home/pi auf meinen Rechner kopieren will, ergibt sich ein
 
cp: Fehler beim Lesen von 'sqlite.db3': Eingabe-/Ausgabefehler
 
 
Vermutlich, weil an der Stelle die Karte schin teilweise defekt ist. Gibt es bspw. mit testdisk eine Möglichkeit, diese relativ aktuelle sqlite.db3 doch noch zu retten ?
Die Dateigröße scheint zur theoretischen DB-Größe zu passen, alleine: Ich komme nicht kopierfähig dran.
Beste Grüße
 
JD.

Antwort per Email an