[Allegro] Datenbank-Problem
Bernhard Eversberg
b-eversberg at gmx.de
Di Nov 29 11:19:48 CET 2016
> Gesendet: Dienstag, 29. November 2016 um 10:01 Uhr
> Von: "Fischer, Thomas" <fischer at sub.uni-goettingen.de>
>
> ich habe festgestellt, dass bei mir die Volltextsuche über eine bestimmte Datenbank A99 zum Absturz bringt.
> Da dies immer bei jfm_15.gld passiert habe ich in diese Datei hineingeschaut – und vermute, dass das Problem damit zu tun haben könnte, dass in der Datei 1.377.165 mal ASCII 0 hintereinander auftritt.
Dann ist es kein Absturz, das Programm braucht wegen der furchtbar vielen Nullen nur sehr lange, den Satz einzullesen.
So etwas war mal aufgefallen und die Fehlersituation wurde dann entschärft, es dürfte daher jetzt ein seltener Ausnahmefall sein.
Es war folgendes passiert, als ein Satz zu speichern war:
1. Programm stellte fest: der Satz muß ans Ende der Datei
2. ... positionierte deshalb hinter das letzte Byte
3. stellte die Position fest, setzte den Schreibzeiger da hin und schrieb die Position für den betr. Satz in die TBL
4. schrieb den Satz an das vermeintliche Ende der Datei.
Bei Vorgang 3 kann anscheinend immer noch mal ein Fehler passieren, aber sehr selten: Das Ergebnis der
Positionsfeststellung war zu groß, in diesem Fall viel zu groß. Wenn der Schreibzeiger dorthin positioniert
wird, dann füllt das Btriebssystem den Raum zwischen dem tatsächlichen Ende und der zu großen Position
mit Nullbytes auf.
Richtig schlimm ist das nicht - es gehen keine Daten verloren oder werden überschrieben.
KEINESFALLS dann die Nullen mit einem Editor rausnehmen! Die Positionen der nachfolgenden Sätze
würden dann nicht mehr stimmen.
SONDERN mit h org die Funktion "Einzelne Datendatei bereinigen" und dann die Datei jfm_15 wählen.
Die Nullen verschwinden auch bei einem Neuaufbau der Datenbank, was aber in Ihrem Fall
erheblich länger dauern würde.
Ob eine Abhilfe möglich ist, muß nochmal untersucht werden. Falls es aber sein kann, daß das
Betriebssytem eine zu große Zahl für die Endposition liefert, wär wohl nix zu machen.
Kleine Nachfrage: Wie groß ist die Datei?
B.E.
Mehr Informationen über die Mailingliste Allegro