Autor Thema: Datenbank def. ??  (Gelesen 10956 mal)

Offline Attu

  • Sr. Member
  • ****
  • Beiträge: 212
  • Country: de
  • Touren-Radfahren (Schlittenhunde war mein Leben)
  • Diabetestyp: DM 1
  • Therapie: Insulin-Pumpe
Datenbank def. ??
« am: Juni 28, 2011, 13:56 »
Hallo Daniel,

benutze  Symbian  S60 V3 im Nokia E72

C-Diary 1.25.

Ich hatte bis gestern abend noch daten eingegeben.
Als ich nun gestern Nacht nochmals Daten eintragen wollte, offnete sich C-Diary mit dem Start-Bildschirm und nach bestätigung schloß es gleich wieder.

Da ich natürlich ständig Daten eingebe, habe ich die DB  "weggesichert" und eine neue Datenbank begonnen.

Mit der neuen Datenbank geht alles.
Wenn ich die "alte" wieder verwende, ist wieder selbes Verhalten wie oben beschrieben.
Vermutlich hat die DB einen "schuß".

nun die Frage, kannst Du die Daten wieder herstellen, bzw als Excel-export lesbar machen zum nachtragen.
der letzte Air-Sync hat am 21.6. statt gefunden.
Also fehlen die Tage vom 21.6. bis 27.6.

Gruß   Peter
*******
Liebe Grüße aus dem Allgäu
Peter
*******

Offline daniel

  • Moderator
  • Full Member
  • *****
  • Beiträge: 180
  • Country: de
  • hermocom / Entwickler von C-Diary
    • hermocom
  • Diabetestyp: DM 1
  • Therapie: Insulin-Pumpe
Re: Datenbank def. ??
« Antwort #1 am: Juni 28, 2011, 17:25 »
Hallo Peter,
wenn du nichts dagegen hast, dann schicke mir doch die defekte Datei, und ich sehe, was ich tun kann.
Klingt in der Tat so, als wäre die Datei defekt.
C-Diary legt Backup-Dateien an. Hast du eine davon (von vor dem Zeitpunkt, ab dem die Originaldatei nicht mehr funktionierte) ausprobiert? Die sollte dann eigentlich noch lesbar sein, und darin fehlt dann vermutlich nur der letzte Eintrag, bei dem das Malheur passiert ist. Wenn du die Backup-Dateien mit "weggesichert" hast, reicht ein Umbenennen der letzten Backup-Datei in den Originaldatei-Namen, und die Backupdatei kann als Datenbankdatei verwendet werden.

Gruß
Daniel
Skype: "hermocom"
DM Typ I seit 1993.
Pumpe Roche Accu-Chek Spirit Combo
Entwickler von C-Diary, einem SiDiary-kompatiblen Diabetes-Tagebuchprogramm für Symbian-Smartphones.
--> http://www.forum.diabetesinfo.de/forum/index.php/board,75.0.html
--> http://www.hermocom.com

Offline Attu

  • Sr. Member
  • ****
  • Beiträge: 212
  • Country: de
  • Touren-Radfahren (Schlittenhunde war mein Leben)
  • Diabetestyp: DM 1
  • Therapie: Insulin-Pumpe
Re: Datenbank def. ??
« Antwort #2 am: Juni 28, 2011, 17:44 »
Hallo Daniel,

ich schick dir mal die dateien, allerdings wir es heute etwas später.

ich hab  folgende Dateien:

c_diary.dat
c_diary.bak1
c_diary.bak2

Ich hab mal die c_diary.bak1 in c_diary.dat umbenannt,
aber da kam sofort eine fehlermeldung, daß die datei nicht lesbar wäre.

Oder sind die Backup dateien in einem spwziellen Verzeichniss ?????

Gruß Peter
*******
Liebe Grüße aus dem Allgäu
Peter
*******

Offline daniel

  • Moderator
  • Full Member
  • *****
  • Beiträge: 180
  • Country: de
  • hermocom / Entwickler von C-Diary
    • hermocom
  • Diabetestyp: DM 1
  • Therapie: Insulin-Pumpe
Re: Datenbank def. ??
« Antwort #3 am: Juni 29, 2011, 09:37 »
Hallo Peter,

sorry für die späte Antwort - gestern bin ich nicht mehr dazu gekommen zu antworten.

Die Dateien c_diary.bak1 und c_diary.bak2 sind schon die richtigen (liegen im selben Verzeichnis wie die Datei c_diary.dat).
Wenn die bak1 auch nicht lesbar ist, dann probiere es mal mit der bak2 (hast du die baks gleichzeitig mit der beschädigten dat-Datei "weggesichert", sind das also auch genau die bak-Dateien, die zu der dat-Datei gehören?)

Ich habe deine Mail erhalten. Werde mich heute drum kümmern und mich per Mail zurückmelden.

Gruß
Daniel

Skype: "hermocom"
DM Typ I seit 1993.
Pumpe Roche Accu-Chek Spirit Combo
Entwickler von C-Diary, einem SiDiary-kompatiblen Diabetes-Tagebuchprogramm für Symbian-Smartphones.
--> http://www.forum.diabetesinfo.de/forum/index.php/board,75.0.html
--> http://www.hermocom.com

Offline daniel

  • Moderator
  • Full Member
  • *****
  • Beiträge: 180
  • Country: de
  • hermocom / Entwickler von C-Diary
    • hermocom
  • Diabetestyp: DM 1
  • Therapie: Insulin-Pumpe
Re: Datenbank def. ??
« Antwort #4 am: Juni 29, 2011, 12:40 »

Rückmeldung doch nicht per Mail, sondern hier öffentlich, denn das ist sicher auch für andere interessant (auch wenn hoffentlich noch niemand anders von so einem Problem betroffen ist!):


Hallo Peter,

ich habe mir deine Dateien angesehen: Es sind leider alle drei Dateien (dat, bak1 und bak2) defekt, alle mit leicht unterschiedlichen Defekten.

Der Grund ist folgender:

Ich habe in C-Diary einen Mechanismus implementiert, der beim Laden der Datenbankdatei automatisch auf die nächste intakte Backupkopie zurückfällt, wenn die Hauptdatei defekt ist (Reihenfolge: Versuche, .dat zu laden, wenn korrupt, versuche .bak1 zu laden, wenn korrupt, versuche .bak2 zu laden).
Aber dieser Mechanismus greift eben nur beim Laden, und du hast vermutlich C-Diary fast immer offen, trägst Daten ein und speicherst diese fleißig, aber in die Situation, die Datei zu laden, kommst du dann nur selten (z.B. nur nach Neustart des Telefons), und mein Rückfallmechanismus greift daher nicht.
So pflanzt sich ein Fehler in der Datenstruktur (evtl. verursacht durch ein Symbian-Bug, RAM-Defekt, kosmische Strahlung (kein Scherz)..., evtl. natürlich auch durch ein C-Diary-Bug, was ich aber für wenig wahrscheinlich halte, da bisher sonst niemand so einen Fehler gemeldet hat) über die Backupkopien fort. Das ist ein Fall, den ich beim Programmieren nicht beachtet habe.

Leider habe ich aber auch nicht die Möglichkeit, mit vertretbarem Aufwand die intakten Daten aus deiner Datei herauszuziehen.
Der Grund dafür ist, dass ich in dem Framework, in dem ich programmiere, die Datei dadurch erzeuge, dass ich die Datenstruktur so, wie sie im RAM liegt, direkt in die Datei kopiere (und umgekehrt). Das ist ein simples Kommando wie (vereinfacht):
"file.write(file, database)"
bzw.
"file.read(database, file)"
d.h. die Struktur, in der die Daten in der Datei abgelegt sind, ist mir gar nicht im Detail bekannt. In deinem Fall schlägt dieser monolithische read()-Befehl fehl, und es werden KEINE Daten in den RAM geladen, d.h. ich kann auch keine Daten auslesen.
Ich müßte sehr aufwändig versuchen, diese Datenstruktur empirisch zu ermitteln, um einen Datei-Parser zu programmieren, der bis zur fehlerhaften Stelle die Daten extrahieren kann.
Das würde ich zwar gern tun, aber dafür fehlt mir die Zeit. Tut mir wirklich leid!

Ich werde aber Folgendes tun:
Ich werde im Programmcode (fließt dann in die nächste Version, 1.26, ein) einen Mechanismus einbauen, der die Datei nach jedem Speichern neu lädt, so dass C-Diary sofort nach dem Speichern merkt, wenn die Datei korrupt ist, und dann auf eine intakte Backupkopie zurückfällt (d.h. die seit dem letzten manuellen bzw. automatischen Speichern eingegebenen Daten wären dann wieder verschwunden, es wird auch eine entsprechende Warnung ausgegeben).
So vermeide ich, dass sich ein Fehler in der Datenstruktur, der sich einmal eingeschlichen hat, bei kontinuierlicher Verwendung von C-Ciary (also ohne zwischenzeitliches Neuladen der Datei) über alle verfügbaren Datenbankkopien (dat, bak1 und bak2) fortpflanzt und so immer mindestens eine intakte Datei existiert.

Das verlängert die Zeit, die C-Diary zum Speichern braucht, etwas, aber ich denke dass das ein Preis ist, den man für diese zusätzliche Sicherheit gern zahlt.

Evtl. werde ich das Timeout für die automatische Speicherung dann von 15 Sekunden auf vlt. 30 Sekunden erhöhen, damit man nicht so oft vom längeren Speichern gestört wird, wenn man Daten in langsamer Folge eingibt oder bearbeitet.

Viele Grüße,
Daniel
Skype: "hermocom"
DM Typ I seit 1993.
Pumpe Roche Accu-Chek Spirit Combo
Entwickler von C-Diary, einem SiDiary-kompatiblen Diabetes-Tagebuchprogramm für Symbian-Smartphones.
--> http://www.forum.diabetesinfo.de/forum/index.php/board,75.0.html
--> http://www.hermocom.com

Offline daniel

  • Moderator
  • Full Member
  • *****
  • Beiträge: 180
  • Country: de
  • hermocom / Entwickler von C-Diary
    • hermocom
  • Diabetestyp: DM 1
  • Therapie: Insulin-Pumpe
Re: Datenbank def. ??
« Antwort #5 am: Juni 29, 2011, 13:11 »
Hallo Peter,
nach erneutem Ansehen der korrupten Dateien ist relativ klar, dass der Grund für den Fehler in deiner Datei ein Dateisystemfehler war. AAnscheinend wurde das Ende der Datei mit Inhalten aus einer anderen Datei überschrieben. An einer Stelle ziemlich am Ende der Datei ändert sich nämlich deutlich sichtbar die Datenstruktur. So eine Datenstruktur kann nicht durch C-Diary erzeugt worden sein.
Leider sind meine Versuche, die Datei zu laden, nachdem ich den fehlerhaften Teil der Datei an einer Stelle abgeschnitten habe, die dem Ende einer intakten Datei ähnlich sieht, auch fehlgeschlagen. Das Problem ist also komplexer als fälschlich an die Datei angehängte Fremddaten.
Vielleicht gibt es hier einen Datenformat-Experten, der die Fähigkeit hat, Datenstrukturen in Dateien leicht entschlüsseln zu können? Dann könnte man ihm mal deine Datei geben und ggf. eine intakte Vergleichsdatei.
Gruß
Daniel
Skype: "hermocom"
DM Typ I seit 1993.
Pumpe Roche Accu-Chek Spirit Combo
Entwickler von C-Diary, einem SiDiary-kompatiblen Diabetes-Tagebuchprogramm für Symbian-Smartphones.
--> http://www.forum.diabetesinfo.de/forum/index.php/board,75.0.html
--> http://www.hermocom.com

Offline Alf

  • Administrator
  • Special Member
  • *****
  • Beiträge: 6246
  • Country: 00
  • Mein Name ist Shumway. Gordon Shumway.
    • Diabetikertagebuch
  • Diabetestyp: ---
  • Therapie: ---
Re: Datenbank def. ??
« Antwort #6 am: Juni 29, 2011, 16:09 »
Puh also das halte ich für ein aufwändiges und sehr gewagtes Unterfangen ;), denn da müsste man bis auf HexEditor-Tiefe hinabsteigen und einzeln die Bytes zurechtrücken... :-\
DM 1, ICT mit Lantus/Humalog/Insuman Rapid, Freestyle Libre, SiDiary Win & Android
Diabetes Software, Windhorst, Helden der Kindheit

Offline daniel

  • Moderator
  • Full Member
  • *****
  • Beiträge: 180
  • Country: de
  • hermocom / Entwickler von C-Diary
    • hermocom
  • Diabetestyp: DM 1
  • Therapie: Insulin-Pumpe
Re: Datenbank def. ??
« Antwort #7 am: Juni 29, 2011, 18:02 »
Hi Alf,

ja klar, im Hex-Editor war ich auch schon unterwegs mit den Dateien, und man kann z.B. die Kommentare recht gut lesen (sind Unicode-codiert, also jedes zweite Zeichen ergibt den String), und man kann sicher auch die Zahlenwerte ganz gut zuordnen, wenn man sie erstmal findet.
Da ich die Datenbank (entgegen deinem Rat damals ;-) ) als festes Array implementiert habe, müßte man, wenn man in solchen Dingen versiert ist, recht schnell die Struktur erkennen können und dann auch mit Kenntnis dieser Struktur (für die ich als Anhaltspunkt natürlich die Arrayimplmentierung beisteuern würde) die eigentlichen Daten extrahieren können.

Aber effizient kann das wohl wirklich nur jemand machen, der darin Übung hat!

Viele Grüße,
Daniel
Skype: "hermocom"
DM Typ I seit 1993.
Pumpe Roche Accu-Chek Spirit Combo
Entwickler von C-Diary, einem SiDiary-kompatiblen Diabetes-Tagebuchprogramm für Symbian-Smartphones.
--> http://www.forum.diabetesinfo.de/forum/index.php/board,75.0.html
--> http://www.hermocom.com

Offline Attu

  • Sr. Member
  • ****
  • Beiträge: 212
  • Country: de
  • Touren-Radfahren (Schlittenhunde war mein Leben)
  • Diabetestyp: DM 1
  • Therapie: Insulin-Pumpe
Re: Datenbank def. ??
« Antwort #8 am: Juni 29, 2011, 19:21 »
Hallo Daniel,

dann werden mir wohl die Daten von einer Woche "fehlen"
Ich kann ja zumindest die Daten vom Meßgerät auslesen.


Leider wußte ich nicht, daß ich C-Diary schließen soll oder sollte.
Es ist richtig ich hab es immer Offen, darum hab ich ja ein Multitasking-Sys.

In diesem Fall kann ich mir gut vorstellen, was da vorgefallen ist.
Da ich ja nicht nur C-Diary aktiv habe sondern auch Mail for Exchange, weden ständig meine Geschäftsdaten im Handy abgeglichen und ich habe derzeit einen "masiven" eMail verkehr.
Es ist durchaus denkbar, daß hier Speicherbereiche überschrieben wurden.

OK Erfahrungen muß man(n) sammeln, nur so kommt man(n) weiter.


Eine Überlegung von mir was das Schließen des Programmes anbelangt.

Über die Config-Datei steuern, daß nach dem automatischen Speichern der Daten, das Programm automatisch (Zeit in der Config einstellbar ab 30sec - ???) geschlossen wird.
Ich hab da kein problem, daß das Programm geschlossen wird oder soll.
Ich will aber nicht immer daran denken, das sollte schon automatisch gehen.


Gruß  Peter
*******
Liebe Grüße aus dem Allgäu
Peter
*******

Offline daniel

  • Moderator
  • Full Member
  • *****
  • Beiträge: 180
  • Country: de
  • hermocom / Entwickler von C-Diary
    • hermocom
  • Diabetestyp: DM 1
  • Therapie: Insulin-Pumpe
Re: Datenbank def. ??
« Antwort #9 am: Juni 29, 2011, 21:33 »
Hallo Peter,
jetzt, mit der Version 1.25, ist es keine so schlechte Idee, das Programm ab und zu neu zu starten, aber ab der Version 1.26 wird das nicht mehr nötig sein, da ich ja dann die Gegenmaßnahme beim Speichern eingebaut haben werde!
Eigentlich war das von mir nicht so gedacht, dass man C-Diary ab und zu schließen sollte. Ich habe nur nicht an die Situation gedacht, dass eine Datei auch von "außerhalb" zerstört werden kann und C-Diary diesen Fall irgendwie sinnvoll behandeln sollte. Mein Fehler.

Viele Grüße,
Daniel
Skype: "hermocom"
DM Typ I seit 1993.
Pumpe Roche Accu-Chek Spirit Combo
Entwickler von C-Diary, einem SiDiary-kompatiblen Diabetes-Tagebuchprogramm für Symbian-Smartphones.
--> http://www.forum.diabetesinfo.de/forum/index.php/board,75.0.html
--> http://www.hermocom.com