Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Fehler (FB+Zeos): internal gds software consistency check... (https://www.delphipraxis.net/40639-fehler-fb-zeos-internal-gds-software-consistency-check.html)

Panthrax 18. Feb 2005 16:29

Datenbank: Firebird • Version: 1.5 • Zugriff über: Zeos Komponenten

Fehler (FB+Zeos): internal gds software consistency check...
 
Hallo.

Ich erhalte folgenden Fehler: internal gds software consistency check (cannot find tip page (165)).

Ich benutze: Zeos (Komponente TZConnection) und Firebird Embedded Server

So ist das ganze verpakt:
Delphi-Quellcode:
...

    // in der Klassendefinition von TForm1
    private
    ZConnection1 :TZConnection;

...

procedure TForm1.FormCreate(Sender: TObject);
begin
  (*ZConnection1.Properties.Add(
    'CreateNewDatabase=CREATE DATABASE ''MyDB.fdb'' '+
    'PAGE_SIZE=8192 USER ''SYSDBA'' PASSWORD ''masterkey''; '+
    '');(**)
  ZConnection1.Connect;
  ZConnection1.Disconnect;
  ZConnection1.Properties.Clear;
  ZConnection1.Connect;
end;
Die Einstellungen von ZConnection1 im Objektinspektor sind:
AutoCommit: True
Connected: False
Database: '.\MyDB.fdb'
HostName: ''
Password: 'masterkey'
Protocol: 'firebird-1.5'
ReadOnly: False
TransactionIsolation: tiNone
User: 'SYSDBA'

Vor dem ersten Programm lauf existiert die Datei './MyDB.fdb' nicht.

Im 1. Programmlauf (F9) ist der oben auskommentierte Programmblock nicht auskommentiert. Das Programm startet und es tritt keine Exception auf. Ich beende das Programm wieder.

Die Datei './MyDB.fdb' existiert und ist 1,04 MB (1.097.728 Bytes) groß.

Im 2. Programmlauf (F9) wird die Prozedur wie oben angegeben ausgeführt. Es tritt die Exception auf.

Delphi-Debugger-Meldung:

Im Projekt Project1.exe ist eine Exception der Klasse EZSQLException aufgetreten. Meldung: 'SQL Error: internal gds software consistency check (cannot find tip page (165)). Error Code: -902. Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements'. Prozesswurde angehalten. Mit einzelne Anweisung oder Start fortsetzen.


Ich bitte um Hilfe. Ich weiß nicht weiter... :coder2:

Warum tritt der Fehler auf?

Panthrax

Panthrax 19. Feb 2005 01:52

Anhang: Flash-Film zum Kernproblem
 
Um das Kernproblem nachvollziehbar zu gestalten, habe ich einen kleinen Flash-Film erstellt. Ich zeige, wie ich mit mit Delphi, allein unter Benutzung der wesentlichen Komponente TZConnection, zur Exception komme.

Exception Demo (ca. 3MB, 5:48min), zum Betrachten den Browser idealerweise maximieren (F11)

Bitte nicht wundern, während der Flash-Film lädt, macht Lycos ein bisschen Werbung. Beim Ende hab ich ein bisschen knapp geschnitten, das letzte Wort ist nicht mehr ganz 'drauf'.

Ich hoffe es hilft beim verstehen und helfen.

Mir ist die Erleuchtung immer noch nicht gekommen... :coder2:

... so stellt sich für mich immer noch die Frage: Warum tritt der Fehler auf?

Panthrax

dizzy 19. Feb 2005 04:23

Re: Fehler (FB+Zeos): internal gds software consistency chec
 
Ich habe zwar keine Lösung zu dem Problem, aber ich wollte nur kurz mitteilen, dass das die gelungenste Fehlerbeschreibung war die mir bis Dato untergekommen ist! :thumb:
Illustrativer geht es kaum noch.

Mit welchem Tool hast du das aufgenommen?

Schönen Gruss,
Fabian

Luckie 19. Feb 2005 05:00

Re: Anhang: Flash-Film zum Kernproblem
 
Zitat:

Zitat von Panthrax
Exception Demo (ca. 3MB, 5:48min), zum Betrachten den Browser idealerweise maximieren (F11)

:thumb: Ich habe das Video interessierter verfolgt, als so manche Gerichtsshow auf RT oder SAT. :mrgreen:

lume96 19. Feb 2005 12:48

Re: Fehler (FB+Zeos): internal gds software consistency chec
 
Moin,

gib mal in dem create database statement ein default character set an, z.B.:

SQL-Code:
  ZConnection1.Properties.Add('set sql dialect 1;');
  ZConnection1.Properties.Add(
    'CreateNewDatabase=CREATE DATABASE ''MyDB.fdb'' '+
    'PAGE_SIZE=8192 USER ''SYSDBA'' PASSWORD ''masterkey'' DEFAULT CHARACTER SET ISO8859_1; '+
    '');
Tschüss,
Lutz

Hansa 19. Feb 2005 13:21

Re: Fehler (FB+Zeos): internal gds software consistency chec
 
Das Filmchen gucke ich mir nachher noch an. So ca. 16:00 wenn die Gerichtsshows kommen. :mrgreen: Allerdings habe ich folgende Vermutung : beim ersten Lauf geht doch das Programm oder ? Wird es denn tatsächlich komplett beendet ? Nicht nur in Delphi sondern auch auf Datenbankebene ? Sind alle Transaktionen tatsächlich beendet ?

Es geht mir darum, daß FB embedded eben ein lokaler Server ist. Also kann nur ein Prozess drauf zugreifen. Viele denken, daß sei eine Einzelplatz Datenbank, aber es kann auch nur mit einem Programm darauf zugegriffen werden :!: Natürlich nur zur selben Zeit !!

Robert_G 19. Feb 2005 13:30

Re: Fehler (FB+Zeos): internal gds software consistency chec
 
@Hansa
Genau. Wenn sich die Delphi IDE (Also die ZConnection im Designer) die DB schnappt, kann deine Debug session nicht mehr darauf zugreifen. ;)

lume96 19. Feb 2005 13:53

Re: Fehler (FB+Zeos): internal gds software consistency chec
 
Moin,

@Hansa, Robert_G :
In diesem Falle wäre die Fehlermeldung aber anders, so im Stil :
"Datei konnte nicht geöffnet werden, ist schon von einem anderen Prozess in Gebrauch."

Das Problem liegt hier wohl eher im fehlenden DEFAULT CHARSET im Create DB Statement. Das scheint zu einer korrupten DB zu führen.

Tschüss,
Lutz

Panthrax 19. Feb 2005 14:40

Re: Fehler (FB+Zeos): internal gds software consistency chec
 
Eureka!

@dizzy: Dankeschön. Ich habe es mit BB Flashback aufgenommen.

@Luckie: Vielleicht hat das, was der neumod'sche Volksmund als eLerning bezeichnet, ja doch die Kraft sich gegenüber zweifelhaften Fernsehsendungen durchzusetzten. (...)

@Lume96: Ich habe ein Default-Character-Set angegeben. Und - es funktioniert! Die Datenbank lässt sich wieder öffnen in einem zweiten, dritten, vierten,... Programmlauf. Ich danke dir für den Hinweis! :thumb:

An anderer Stelle im Netz (Quelle hab ich grad nicht parat) wird gesagt, dass mit den Zeos Komponenten in Verbindung mit Interbase/Firebird die Defaulteinstellung beibehalten werden sollte. Die Defaulteinstellung für den SQL-Dialekt ist 3.

@Hansa: Ich glaube das Filmchen kannst du aus deinem Nachmittagsprogramm streichen. Das Programm läuft jetzt ohne Exception. Aber wenn du unbedingt magst... Ich lass es noch eine weile im Netz.

Es ist ja nicht so, dass ich überhaupt nicht auf die Datenbank zugreifen konnte. Es ging immer nur beim ersten Mal - in dem Programmlauf in dem die DB auch erstellt wurde. Jeder weitere Programmlauf, in dem die Datenbank nicht erzeugt wurde, endete in einer Exception. (Die DB war für diese Programmläufe natürlich bereits vorhanden.)

Was den Programmierstil an geht: Lange bevor ich auf Delphi umstieg, habe ich mit Pascal gearbeitet. Pascal ist nicht ao mütterlich mit einem umgegangen; man hatte stets selbst alles wegzuräumen. Diesen Programmierstil habe ich in Delphi beibehalten, auch wenn es unter Delphi scheinbar "nicht notwendig" ist. Das fehlende Disconnect aus meinem Einstiegsbeitrag steht in der FormDestroy-Methode. Für den Film habe ich darauf geachtet, dass alles optisch beieinander ist, und nicht noch eine zweite Methode begonnen.

@Robert_G: Die Problematik um die unterschiedlichen Zugriffe seitens IDE und Programm bei Ausfhrung habe ich gewusst. Ich hatte die Verbindung in der IDE nicht offen. - Ging ja auch nicht, die IDE hat mir beim setzen von Connected:=True im Objektinspektor den selben Fehler gemeldet, wie das Programm zur Laufeit.

Für den Fall, dass die Datenbank nicht geöffnet werden kann, weil die Dateizugriffsrechte fehlen, hatte ich einen andersgearteten Fehler erwartet. Da simme ich mit Lume96 überein.

@Lume96 (2): So ähnlich hatte ich auch gedacht.


Hier noch ein paar Links zum Thema Default Character Set:

Hansa 19. Feb 2005 16:22

Re: Fehler (FB+Zeos): internal gds software consistency chec
 
Zitat:

Zitat von Panthrax
...Es ist ja nicht so, dass ich überhaupt nicht auf die Datenbank zugreifen konnte. Es ging immer nur beim ersten Mal - in dem Programmlauf in dem die DB auch erstellt wurde.

Na so was aber auch. 8) IMHO einer der größten Fehler die bei Datenbanken gemacht werden: Datenbank immer neu anlegen bzw. sogar Programm dafür schreiben. Was soll das nützen ? Die DB legt man einfach mit einem SQL-Script an und das wars. Die Anfangsfrage wäre gar nicht erst aufgetaucht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:53 Uhr.
Seite 1 von 2  1 2      

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