Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi EDataBaseError / Index is out of date (https://www.delphipraxis.net/142704-edatabaseerror-index-out-date.html)

Spargeltarzan 2. Nov 2009 02:45

Datenbank: BDE / Paradox • Version: 7.0 • Zugriff über: ODBC

EDataBaseError / Index is out of date
 
Hallo zusammen

Vor kurzer Zeit hatte ich einen Systemabsturz. Ich hatte aber meine Datenbank (Paradox-Table) auf eine externe Festplatte gespeichert (2täglich). Als ich die letzte aktuelle DB zurück an meinen Programmstandort kopierte und das Programm wieder laufen liess, kam folgende Fehlermeldung: EDataBaseError / Index is out of date. Ich hab dann eine Sicherung zurück kopiert, die 2 Tage älter war. Mit dieser Sicherung funktioniert mein Programmaufruf, ohne Fehlermeldung. Ich hab aber in den 2 Tagen ne Menge Daten in die DB eingegeben. Wenn ich die aktuelle DB nicht wieder zum laufen kriege, dann ist eine Menge Zeit verloren und ich muss dann die Daten nochmals von Hand eingeben.
Wer kann mir helfen ?
Wie bekomm ich die aktuelle DB mit der Fehlermeldung des Programms zum laufen ? Die Dateien sind nicht beschädigt (physisch). Ich hab nur die Dateien der DB mit den Extensions: *.db / *.FAM / *.MB / *.PX / *.TV gesichert. Meine Sekundärindices nicht. An der Datenbankstruktur hab ich ja nichts geändert.
Wenn jemand ein Tip hat, wäre ich dankbar.

Gruss

Spargeltarzan

himitsu 2. Nov 2009 02:53

Re: EDataBaseError / Index is out of date
 
Zitat:

Meine Sekundärindices nicht.
Daß heißt du verwendest dann "andere" Indexdaten, welche eventuell nich zu den restlichen Daten passen?

Kenn mich jetzt mit Datenbanken nicht aus, aber ich würde einfach mal versuchen diese "Sekundärindices" zu löschen.

HeikoAdams 2. Nov 2009 08:30

Re: EDataBaseError / Index is out of date
 
Die von Dir genannte Fehlermeldung kommt in der Regel dann, wenn der Zeitstempel des Indizes nicht mit dem der Tabelle übereinstimmt. Normalerweise kann man das Problem dadurch beheben, das man die Indizes neu erstellt. Das geht entweder über entsprechende Tools oder direkt über das API der BDE. Die entsprechende Funktion heißt DbiRegenIndexes.

Auch wenn es offtopic ist, aber Du solltest vielleicht auch darüber nachdenken, Dein Programm auf eine modernere und robustere Datenbank zu portieren.

hoika 2. Nov 2009 10:32

Re: EDataBaseError / Index is out of date
 
Hallo,

Zitat:

Ich hab nur die Dateien der DB mit den Extensions: *.db / *.FAM / *.MB / *.PX / *.TV gesichert. Meine Sekundärindices nicht. An der Datenbankstruktur hab ich ja nichts geändert.
Aha ...
Das die xg_ und yg_ Dateien eine gewisse Größe haben,
und bei einem Insert größer werden,
hat dir nicht zu denken gegeben ?

Diese Dateien enthalten nicht nur die Index-Definition,
sondern den Index selbst !

Du musst IMMER alle Dateien (ausser *.net) eines Paradox-Verzeichnisses sichern.


Lösung:
- DBD (Datenbank-Oberfläche starten)
- die entsprechenden DB-Dateien einzeln öffnen
- "Tabelle - Umstrukturieren", CheckBox "Komprimieren" anklicken
und auf "Speichern"

Dabei werden u.a. Indizes neu erstellt.

Dass Paradox ein DB-Dino ist, wurde ja bereits gesagt ... ;)


#Update:#
Es gibt von Borbarcado ein Tool (TUtilXX), das macht das für ein komplettes Verzeichnis,
muss aber zu der verwendeten BDE-Version passen.

Auf jeden Fall mache erst mal nochmal ein Backup, bevor du loslegst.


Heiko

Spargeltarzan 2. Nov 2009 12:10

Re: EDataBaseError / Index is out of date
 
Hallo zusammen

Vielen Dank für Eure Tips. Leider hatte keiner funktioniert. Ich konnte aber das Problem nun lösen:

1) Die Datenbank neu erstellt (nur Struktur)
2) Die Datensätze dann in diese neue DB eingelesen.
3) Die neue Datenbank über die "alte" (die mit dem Indexfehler) drüberkopiert.

Anschliessend das Programm wie gewohnt gestartet.
Klappte prima.

Gruss

Spargeltarzan


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 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