Einzelnen Beitrag anzeigen

urs.liska

Registriert seit: 6. Aug 2003
Ort: Freiburg
195 Beiträge
 
Delphi 6 Professional
 
#1

Korruption in Firebird-DB (Indizes?)

  Alt 12. Dez 2004, 16:46
Hallo Leute,

ich habe ein Problem mit einer anscheinend korrupten Firebird-(1.5)-DB. Und da ich den (sträflichen) Fehler gemacht habe, gleichzeitig Daten einzugeben und an der Struktur rumzumachen, wäre es schon ziemlich gut, wenn ich die Original-DB wiederherstellen könnte (und nicht ein Backup, von dem ich nicht abschätzen kann, was denn eigentlich fehlt).

Also: Die DB macht kein Backup mehr. An immer verschiedenen Punkten (aber im Kontext der gleichen zwei Tabellen), bricht das Backup mit der Fehlermeldung
Code:
Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation.
ab. Wenn ich es mehrmals nacheinander versuche, kann auch mal folgende Meldeung kommen:
Code:
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements.
internal error.
gds_$start_request failed.
.
Mir scheint, das Problem liegt a) nicht nur an der DB-Struktur, sondern auch an den Daten und b) möglicherweise an den Indizes, da der Abbruch immer während der Erstellung der Indizes erfolgt.

Der Abbruch erfolgt immer nach einem unterschiedlichen Index, aber immer im Zusammenhang mit einer von zwei Interselektionstabellen.

Wenn ich mir von IBExpert die Metadaten exportieren lasse und daraus anschließend eine neue, leere DB erzeuge, kann ich diese problemlos "backupen" und wieder "restoren" (wie sagt man sowas auf "neudeutsch"?). Daraus schließe ich, dass es irgendwie mit den eingegebenen Daten zu tun haben muss

Wenn ich mir von IBExpert die Metadaten inkl. Tabelleninhalt exportieren lasse, bricht der Versuch der Neuerstellung mit dem Verweis auf eine "Foreign Key violation" ab.

Wenn ich nun versuchshalber bei den betroffenen Tabellen Indizes und Schlüssel deaktiviere bzw. lösche (keine Angst, ich bin der einzige User der DB, es kann also niemand in der Zwischenzeit ungültige Daten eingeben), bricht das Backup an immer anderen Stellen ab.

Hat jemand eine Idee, woran genau ein solcher Fehler liegen kann bzw. wie ich da wieder raus komme?
Gibt es eine Möglichkeit, alle Indizes (einschließlich der in Schlüsseln verwendeten) neu aufzubauen?

Und falls alles nichts hilft: wie bekomme ich mit dem geringsten Frust die Daten in eine leere Kopie der DB
(Erschwerend kommt hinzu, dass es ein paar Tabellen gibt, die per Foreign Key auf sich selbst verweisen; dabei ist es möglich, dass ein Datensatz auf einen späteren verweist, was beim Übertragen natürlich eine Foreign Key Violation hervorrufen kann)

Bin über jeden Tipp sehr dankbar.
Urs


-----
WinXP
Firebird 1.5
IBExpert 2004.01.22
  Mit Zitat antworten Zitat