Datenbank Fehlerhaft

Hallo Torben,

meine Datenbank hat einen Fehler und ich kann Mairlist nicht mehr öffnen. Kannst du mir weiterhelfen?

Database Diskimage is Malformed

VG

Andre

  1. Backup der Datenbankdatei erzeugen

  2. sqlite3.exe besorgen (seit mAirList 4.4 im mAirList-Programmverzeichnis enthalten!) und in dasselbe Verzeichnis wie die Datenbankdatei kopieren.

Im folgenden nehme ich an, dass die Datenbankdatei “database.mldb” heißt.

  1. sqlite3.exe starten. Es öffnet sich ein Befehlsfenster, dort die folgenden Befehle eingeben (jeweils mit Return bestätigen):
.open database.mldb
.output dump.txt
.dump
.quit

Es wurde nun eine Textdatei “dump.txt” erzeugt. Wenn du sie im Editor öffnest, sollte sie ungefähr so aussehen:

PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE config (   name VARCHAR PRIMARY KEY,   value VARCHAR );
...

Wir können nun eine frische Datenbank anlegen und den Dump dort einspielen.

  1. Alte database.mldb verschieben/umbenennen.

  2. sqlite3.exe wieder starten und folgendes eingeben:

.open database.mldb
.read dump.txt
.quit

Wenn alles gut gegangen ist, hast du nun wieder eine funktionierende Datenbankdatei.

Falls beim Dump (Schritt 3) irgendwelche Fehler oder Warnungen angezeigt werden, diese am besten erstmal ignorieren. Bestenfalls bedeuten sie nur, dass einige Einträge nicht gesichert werden können.

Falls die so erzeugte Datenbankdatei weiterhin zu Fehlermeldungen in mAirList führt, müssen wir weiter überlegen.

1 Like

Hallo Torben,

der befehl .open kennt sqlite3 nicht. Ich bekomme hier einen Fehler das er mit diesem Befehl nichts anfangen kann.

unknow command or invalid arguments

ich habe es genau so eingegeben wie beschrieben. Meine Datenbank heißt lediglich Datenbank_aktuell.mldb was ich geändert habe.

VG

Andre

Oh, dann ist das eine andere sqlite3-Version als ich sie habe. Meine kennt “.open”.

Alternativ:

Windows-Befehlsfenster aufmachen, mit “cd” in den richtigen Ordner wechseln und dann “sqlite3.exe Datenbank_aktuell.mldb” starten. Dann öffnet er die Datei direkt beim Programmstart, und der .open-Befehl kann weggelassen werden.

Hallo Torben,

ich habe die richtige Version von sqlite gefunden. Alles gemacht wie beschrieben.

Beim öffnen von der Datenbank kommt der Fehler das ein Datenbank mit der ID… erwartet wird aber nur die Datenbank mit folgender ID vorhanden ist.
Ich habe die alte Datenbank komplett aus Mairlist Config gelöscht und der neuen Datenbank die ID gegeben welche verlangt wird. Leider ohne Erfolg.

Entweder ist dann beim Dump/Restore was schiefgelaufen, oder die Datenbank ist doch wirklich richtig kaputt gewesen.

Wie groß ist die alte Datenbankdatei? Kannst du sie irgendwo hochladen?

Irgendwas hast du falsch gemacht. Ich hab sie innerhalb einer Minute wiederhergestellt, mit den Befehlen von oben.

Nochmal als Referenz, falls jemand später auf diesen Thread stößt:

tw@macmini:~/tmp/andre$ sqlite3 database_aktuell.mldb 
SQLite version 3.8.5 2014-08-15 22:37:57
Enter ".help" for usage hints.
sqlite> pragma integrity_check;
*** in database main ***
Page 27115: btreeInitPage() returns error code 11
On tree page 1706 cell 94: Child page depth differs
Page 27315: btreeInitPage() returns error code 11
Page 27518: btreeInitPage() returns error code 11
Page 27735: btreeInitPage() returns error code 11
Page 27189: btreeInitPage() returns error code 11
On tree page 14704 cell 5: Child page depth differs
Page 27547: btreeInitPage() returns error code 11
On tree page 14704 cell 7: Child page depth differs
Page 27548: btreeInitPage() returns error code 11
On tree page 15403 cell 5: Child page depth differs
On tree page 15403 cell 6: Child page depth differs
Page 27310: btreeInitPage() returns error code 11
On tree page 15365 cell 21: Child page depth differs
Page 27691: btreeInitPage() returns error code 11
On tree page 15365 cell 23: Child page depth differs
Page 27064: btreeInitPage() returns error code 11
On tree page 15449 cell 18: Child page depth differs
Page 27451: btreeInitPage() returns error code 11
On tree page 15449 cell 20: Child page depth differs
Page 27126: btreeInitPage() returns error code 11
On tree page 16194 cell 17: Child page depth differs
Page 27530: btreeInitPage() returns error code 11
On tree page 16194 cell 19: Child page depth differs
Page 27111: btreeInitPage() returns error code 11
On tree page 23406 cell 18: Child page depth differs
Page 27510: btreeInitPage() returns error code 11
On tree page 23406 cell 20: Child page depth differs
Page 27246: btreeInitPage() returns error code 11
On tree page 16130 cell 19: Child page depth differs
Page 27641: btreeInitPage() returns error code 11
On tree page 16130 cell 21: Child page depth differs
Page 27651: btreeInitPage() returns error code 11
Page 27443: btreeInitPage() returns error code 11
On tree page 16132 cell 1: Child page depth differs
Page 27308: btreeInitPage() returns error code 11
On tree page 16527 cell 5: Child page depth differs
Page 27665: btreeInitPage() returns error code 11
On tree page 16527 cell 7: Child page depth differs
Page 27136: btreeInitPage() returns error code 11
On tree page 16407 cell 6: Child page depth differs
Page 27535: btreeInitPage() returns error code 11
On tree page 16407 cell 8: Child page depth differs
Page 27678: btreeInitPage() returns error code 11
On tree page 16552 cell 11: Child page depth differs
On tree page 16552 cell 12: Child page depth differs
Page 27218: btreeInitPage() returns error code 11
On tree page 19897 cell 16: Child page depth differs
On tree page 19897 cell 17: Child page depth differs
Page 27695: btreeInitPage() returns error code 11
On tree page 23621 cell 19: Child page depth differs
On tree page 23621 cell 20: Child page depth differs
Page 27241: btreeInitPage() returns error code 11
On tree page 20760 cell 23: Child page depth differs
On tree page 15404 cell 2: Child page depth differs
On tree page 15404 cell 3: Child page depth differs
Page 27725: btreeInitPage() returns error code 11
On tree page 14722 cell 4: Child page depth differs
On tree page 14722 cell 5: Child page depth differs
Page 27600: btreeInitPage() returns error code 11
On tree page 14748 cell 14: Child page depth differs
On tree page 14748 cell 15: Child page depth differs
Page 27185: btreeInitPage() returns error code 11
On tree page 14849 cell 15: Child page depth differs
Page 27534: btreeInitPage() returns error code 11
On tree page 14849 cell 17: Child page depth differs
Page 27400: btreeInitPage() returns error code 11
On tree page 25414 cell 15: Child page depth differs
On tree page 25414 cell 16: Child page depth differs
Page 27160: btreeInitPage() returns error code 11
On tree page 15529 cell 11: Child page depth differs
On tree page 15529 cell 12: Child page depth differs
Page 27594: btreeInitPage() returns error code 11
On tree page 15529 cell 16: Child page depth differs
On tree page 15529 cell 17: Child page depth differs
Page 27674: btreeInitPage() returns error code 11
On tree page 15529 cell 20: Child page depth differs
On tree page 15529 cell 21: Child page depth differs
Page 27514: btreeInitPage() returns error code 11
On tree page 15897 cell 11: Child page depth differs
On tree page 15897 cell 12: Child page depth differs
Page 27675: btreeInitPage() returns error code 11
On tree page 15404 cell 14: Child page depth differs
Page 27772: btreeInitPage() returns error code 11
On tree page 17697 cell 9: Child page depth differs
On tree page 17697 cell 10: Child page depth differs
Page 27392: btreeInitPage() returns error code 11
On tree page 17697 cell 21: Child page depth differs
On tree page 17697 cell 22: Child page depth differs
Page 27066: btreeInitPage() returns error code 11
On tree page 17697 cell 25: Child page depth differs
On tree page 15404 cell 15: Child page depth differs
Page 27492: btreeInitPage() returns error code 11
On tree page 14916 cell 25: Child page depth differs
Page 27750: btreeInitPage() returns error code 11
On tree page 14933 cell 4: Child page depth differs
On tree page 14933 cell 5: Child page depth differs
Page 27583: btreeInitPage() returns error code 11
On tree page 14933 cell 25: Child page depth differs
Page 27522: btreeInitPage() returns error code 11
sqlite> .output dump.txt
sqlite> .dump
sqlite> .quit
tw@macmini:~/tmp/andre$ sqlite3 database_repariert.mldb <dump.txt 
tw@macmini:~/tmp/andre$ ls -l
total 139624
-rw-r-----@ 1 tw  staff  28453888  6 Feb 16:35 database_aktuell.mldb
-rw-r--r--  1 tw  staff  21577728  6 Feb 16:37 database_repariert.mödb
-rw-r--r--  1 tw  staff  21453670  6 Feb 16:36 dump.txt

Dropbox-Link kommt gleich per Mail.