SQL-Fehlercode

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

MVDA
Beiträge: 4
Registriert: Sa, 05.12.2020 17:17

SQL-Fehlercode

Beitrag von MVDA »

Hallo,
ich bin neu im Forum und betreibe schon einige Jahre eine Base-Datenbank (Version 4.1.8 unter Win10 mit ca.1000 Datensätzen. Jetzt erhalte ich folgende Fehlermeldung beim Öffnen einer Tabelle:
SQL-Status: S1000
Fehler-Code: -78
error in script file line : 38 out of memory

Wie kann der Fehler behoben werden und welches script file ist da gemeint?

Danke und Gruß
MVDA

RobertG
*******
Beiträge: 1945
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: SQL-Fehlercode

Beitrag von RobertG »

Hallo MVDA,

am einfachsten: Letzte Sicherheitskopie nutzen.
Etwas komplizierter: Eine Kopie der *.odb-Datei in einem Packprogramm bearbeiten.
Und jetzt weiter aus dem Handbuch:
Die Daten der Datenbank liegen in der *.odb-Datei im Unterverzeichnis «database». Hier gibt es eine Datei «data» und eine Datei «backup». Ist die Datei «data» defekt, so kann sie über die Datei «backup» wiederhergestellt werden. Hierzu muss die im Verzeichnis «database» liegende Datei
«properties» bearbeitet werden. Hier gibt es eine Zeile «modified=no». Diese muss umgeschrieben werden zu «modified=yes». Das zeigt dem System an, dass die Datenbank nicht korrekt beendet wurde. Jetzt wird aus der komprimierten «backup»-Datei beim Neustart eine neue «data»-Datei erstellt.
Gruß

Robert

MVDA
Beiträge: 4
Registriert: Sa, 05.12.2020 17:17

Re: SQL-Fehlercode

Beitrag von MVDA »

Hallo Robert
Danke für den Tipp, aber die im Handbuch beschriebenen Vorgehen hatte ich auch schon probiert, leider ohne Erfolg.
Wenn ich den SQL-Befehl 'Shutdown script' eingeben, wird eine riesige .script-Datei in das Verzeichnis database geschrieben, bei eine Größe von 150 GB! habe ich dann abgebrochen (Die .data->Datei ist nur 19 MB groß). Auch das Verwenden der backup-Datei war nicht erfolgreich. Weist du auf welche script-Datei sich die Fehlermeldung bezieht?
Danke und Gruß
MVDA

RobertG
*******
Beiträge: 1945
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: SQL-Fehlercode

Beitrag von RobertG »

Hallo MVDA,

schau Dir doch einmal das an, was in database/script steht. Was ist dort in Zeile 38 zu lesen? Eine andere Script-Datei wird das nicht sein.

Gruß

Robert

MVDA
Beiträge: 4
Registriert: Sa, 05.12.2020 17:17

Re: SQL-Fehlercode

Beitrag von MVDA »

Ok, die script-Datei hat aber keine ZeilenNr. Es ist Fließtext, der je nach Fenstergröße einen anderen Zeilenumbruch hat (wenn ich die Datei z.B. im Editor öffne)?

RobertG
*******
Beiträge: 1945
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: SQL-Fehlercode

Beitrag von RobertG »

Hallo MVDA,

das scheint mir dann doch der falsche Editor zu sein, mit dem Du das öffnest. Das ganze schaut bei mir in einer einfachen Testdatenbank so aus:

Code: Alles auswählen

SET DATABASE COLLATION "German"
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
CREATE CACHED TABLE "Tabelle1"("ID" INTEGER NOT NULL PRIMARY KEY,"Name" VARCHAR(100),"Decimal" DECIMAL(8,2),"Dec2" DECIMAL(10,2))
SET TABLE "Tabelle1" INDEX'88 0'
CREATE USER SA PASSWORD ""
GRANT DBA TO SA
SET WRITE_DELAY 60
Sind also 7 Zeilen.

Gruß

Robert

MVDA
Beiträge: 4
Registriert: Sa, 05.12.2020 17:17

Re: SQL-Fehlercode

Beitrag von MVDA »

Hallo Robert,
Danke! Wenn ich richtig gezählt habe dann steht bei mir in der Zeile 38 folgendes

SET TABLE "Objekt" INDEX'8007608 509928 8014384 924464 724104 32 513120 7963600 5992768 469256 3116024 7437368 0'

Kann das der Fehler sein und welche Bedeutung haben eigentlich diese Index-Zahlen ?

Gruß
MVDA

RobertG
*******
Beiträge: 1945
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: SQL-Fehlercode

Beitrag von RobertG »

Hallo MVDA,

ich vermute, dass der Index falsch ist. Schau einmal, was ich dazu im Anhang des Handbuches aufgeschrieben habe:

Code: Alles auswählen

SET TABLE "Ware" INDEX'608 20'
SET TABLE "Verkauf" INDEX'1872 1656 1872 12'
SET TABLE "Quittung" INDEX'2232 1'
Nach der Einstellung der Position des Indexes in der data-Datei (erscheint nur hier in der script-Datei, wird nie direkt in SQL eingegeben!) werden die automatisch hoch schreibenden Felder der Tabellen («AutoWert») so eingestellt, dass sie die nächsten Werte bei Neueingaben erstellen. So
ist z.B. der letzte eingetragene Wert im Feld "ID" der Tabelle "Ware" die Nummer 19. Das automatische Hochschreiben beginnt also mit der Nummer 20.

Code: Alles auswählen

ALTER TABLE "Ware" ALTER COLUMN "ID" RESTART WITH 20
ALTER TABLE "Verkauf" ALTER COLUMN "ID" RESTART WITH 12
ALTER TABLE "Quittung" ALTER COLUMN "ID" RESTART WITH 1
Die letzte Zahl beim Index hat in dem Beispiel, das ich da beschreibe, etwas mit der anschließenden maximalen Zahl für den AutoWert zu tun. und die 0 dürfte da bei Deiner Zeile wohl falsch sein.

Du arbeitest ja sicher mit einer Kopie, nicht, mit dem Original, wenn Du da etwas veränderst, oder? Nur dann: Wenn weiter unten auch so ein Alter TABLE - Befehl vorkommt zu der Tabelle "Objekt", dann lösche die entsprechende Zeile. Lösche auch die Zeile mit SET TABLE "Objekt" Index ... Und falls etwas anderes zur Tabelle "Objekt" weiter unterhalb von Zeile 23 vorkommt (glaube ich allerdings nicht), dann lösche auch das.

Wenn Du Glück hast, dann reicht das zum Start der Datenbank und Du siehst die Daten. Dann gilt es die Tabelle "Objekt" genau anzuschauen: Steht da bei der letzten Zeile für den Primärschlüssel "AutoWert"? Wenn ja, dann nach dem maximalen Schlüsselwert suchen und in Extras → SQL über ALTER TABLE (siehe oben) den Wert sicher auf den Wert einstellen, der als nächster Wert genommen werden soll.

Erst einmal viel Glück und gegebenenfalls hier eine weitere Meldung. Ich packe das bei Erfolgsmeldungen dann als Ratschlag ins Handbuch ...

Gruß

Robert

Gast

Re: SQL-Fehlercode

Beitrag von Gast »

Hallo Robert,
entschuldige, dass ich so spät reagiere, musste aber überraschend ins Krankenhaus.
Die script-Datei habe ich nun, so wie von dir beschrieben, auch noch in anderen Varianten durchprobiert. Alles war nicht erfolgreich. Der Fehler liegt m.E. auch nicht in der script-Datei, sondern die data-Datei ist das Problem. Mit der script-Datei läßt sich z.B. eine ältere Version der data-Datei problemlos öffnen und die DB funktioniert einwandfrei. Leider fehlen dann die zuletzt bearbeiteten und ergänzten Datensätze! Das betrifft auch die Wiederherstellung mit Hilfe der backup-Datei.
Deshalb meine Frage:
1.Gibt es eine Möglichkeit die data-Datei irgendwie wieder 'lesbar' zu machen (oder die Inhalte der Tabelle 'Objekt' zu exportieren?
2.Kann es sein, das die Fehlermeldung 'out of memory' sich auf ein script der Java-Umgebung bezieht?

Hinweis: Die Datenbank ist als externe DB angelegt (entsprechende Eintragung in content.xml), dadurch wird sofort gespeichert und es können z.B. verschiedene Versionen von Datei im Ordner 'database' leicht kopiert und ausgetauscht werden.
Die funktionierende data-Datei ist vom 12.07.2020 und 16.662 KB
Die korrupte data-Datei ist vom 25.11.2020 und 19.218 KB. Wenn ich diese Datei verwende, sind alle Tabellen vorhanden und ich kann sie öffnen, nur beim öffnen der Tabelle 'Objekt' kommt die Fehlermeldung?!

Übrigens: Der Primärschlüssel 'OB_ID' in der Tabelle 'Objekt' ist nicht als Autowert definiert; die Werte werden 'von Hand ' eingegeben.

Danke und Gruß
MVDA

RobertG
*******
Beiträge: 1945
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: SQL-Fehlercode

Beitrag von RobertG »

Hallo MVDA,

ich gehe davon aus, dass Du an die Daten einer einzelnen Tabelle, die nicht mehr funktioniert, nicht ran kommst. Eine Wiederherstellung geht nur über die Datei "backup", aber das hast Du ja schon versucht.

Ich würde die Tabelle "Objekt" in der nicht funktionierenden Variante löschen und von der Funktionierenden Variante aus dann importieren. Bei der Größe Deiner Datenbank gehe ich davon aus, dass Du in der Tabelle "Objekt" wohl Bilder direkt abspeicherst. So etwas vermeide ich grundsätzlich dadurch, dass ich unterhalb der Datenbank einen Pfad für alle Bilder und Dateien anlege. Von der Datenbankdatei aus lege ich dann lediglich den relativen Pfad dort hin.

Gruß

Robert

Antworten