AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Meine SqLite-Datenbank ist korrupt. Wie bekomme ich sie wieder heile?
Thema durchsuchen
Ansicht
Themen-Optionen

Meine SqLite-Datenbank ist korrupt. Wie bekomme ich sie wieder heile?

Ein Thema von Der schöne Günther · begonnen am 15. Sep 2017 · letzter Beitrag vom 18. Sep 2017
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Meine SqLite-Datenbank ist korrupt. Wie bekomme ich sie wieder heile?

  Alt 15. Sep 2017, 13:59
Datenbank: SQLite • Version: 3.8.7.4 • Zugriff über: FireDAC
Stromausfall, SqLite-Datenbank kaputt. Sobald man sagt myConnection.Connected := True wirft FireDAC eine ESQLiteNativeException mit
Zitat:
[FireDAC][Phys][SQLite] ERROR: database disk image is malformed
.

Er hat auch Recht, sie scheint nicht in Ordnung zu sein. Jetzt hat FireDAC hierfür ein TFDSQLiteValidate im Angebot. Es bietet Methoden wie Analyze(..) oder CheckOnly() . Hört sich genau danach an was ich brauche.

Leider funktioniert das Ding nicht, denn das TFDSQLiteValidate erstellt sich als erstes seine eigene Sqlite-Connection und sagt darauf dann open() . Und das wirft leider schon die Exception. Ich kann mich im Debugger einklemmen und im Connection-String hierfür z.B. ein ; PRAGMA integrity_check anhängen, dann gibt es keine Exception. Aber das bringt anscheinend den Ablauf durcheinander, das Tool meint dann alles sei in Ordnung was ja völliger Käse ist.


Meine Frage: Benutze ich das Ding falsch oder ist es kaputt?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Meine SqLite-Datenbank ist korrupt. Wie bekomme ich sie wieder heile?

  Alt 15. Sep 2017, 14:05
https://stackoverflow.com/questions/...lite3-database
Markus Kinzler
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Meine SqLite-Datenbank ist korrupt. Wie bekomme ich sie wieder heile?

  Alt 15. Sep 2017, 14:26
Ich würde gerne vermeiden diese .exe mitzuliefern, immer auf dem passenden Stand zu halten und diese dann von meiner Software aufrufen und ihre Ausgaben zu parsen und weiterzuverarbeiten. Ich bin bislang nicht dahintergekommen wie ich von FireDAC aus diese "Pragma"-Kommandos absetze und ihre Rückgabe auswerten kann.
  Mit Zitat antworten Zitat
mensch72

Registriert seit: 6. Feb 2008
838 Beiträge
 
#4

AW: Meine SqLite-Datenbank ist korrupt. Wie bekomme ich sie wieder heile?

  Alt 15. Sep 2017, 14:58
du wärest dumm, solche RepairTools mit deiner Software direkt mit zu liefern. Du hast ja sicher eine Backup-Klausel in deinen AGB wo der Kunde/Anwender dafür verantwortlich seine Daten so oft und gut wie er es für nötig hält regelmäßig zu sichern.


Wenn jetzt was kaputt, dann hat Kunde 3 Möglichkeiten:
- er nimmt sein letztes 4h Backup und alles ist gut
- er kontaktiert dich als SW-Lieferant und beantragt eine Einzelfallanalyse samt Support Angebot
- er kontaktiert XY und beantragt eine Einzelfallanalyse samt Support Angebot

Selbst für Kunden mit HighLevel SupportVertrag würde ich nie garantieren, das wir alle DB-Fehler stets zeitnah beheben können.

Bei SQlite verwenden wir kein FireDac, sondern UniDac wo es einen nativen PAS SQlite Zugriff ohne die DLL gibt. Im DumpMode konnten wir solange es phyisch vom Datenträger lesbar war, bisher alles wieder in den PC-Speicher holen und plain separat sichern... dann beginn stets die Einzelfall Arbeit: nämlich aktuell&al zu unterscheiden und wieder alles gesamt in eine konsitente Version zu bekommen. Das kann und macht bei uns aber niemals unsee Endkundenanwendung.

(Die Grenze bei der DB Wiederherstellung zu "Geht nicht mehr" liegt sehr hoch, es ist sehr oft nur eine Frages des Aufwandes/Willens und des Geldes.)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Meine SqLite-Datenbank ist korrupt. Wie bekomme ich sie wieder heile?

  Alt 18. Sep 2017, 11:36
Hi zusammen

Zitat von mensch72:
Zitat:
...wo es einen nativen PAS SQlite Zugriff ohne die DLL gibt.
OK, in Sachen SQLite bin ich absoluter Anfänger. Doch ich glaubte bisher: SQLite ist die dll.
Dem scheint aber nach obiger Aussage nicht wirklich so zu sein...
Oder irre ich mich da?

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.159 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Meine SqLite-Datenbank ist korrupt. Wie bekomme ich sie wieder heile?

  Alt 18. Sep 2017, 11:56
Ich liefere auch keine dll mit, FireDAC embedded die sqlite-DLL glaube ich in die Anwendung. Irgendwo auf dem DocWiki stand genaueres und wie man das steuern kann, ich habe es nicht mehr im Kopf.



Backup-Klausel [...] AGB [...] beantragt eine Einzelfallanalyse samt Support Angebot
Vielen Dank für die interessanten Vorschläge aber so funktioniert das bei mir nicht.

Ich bin persönlich auch der Überzeugung dass man sein MTBF nicht unendlich hoch bekommt und es sich durchaus lohnt zu schauen wieviel man am MTBR drehen kann - Sprich: Automatische Wiederherstellung, oder zumindest automatische Wiederherstellung der letzten X Prozent. Besser als nichts. Insbesondere wenn der Kunde auf der anderen Seite der Welt sitzt und der Telefon-Support hier grade schläft.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz