[Erledigt] Zeos schmiert ab

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6197
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Zeos schmiert ab

Beitrag von af0815 »

Frage, wenn du in den Daten KEINE Umlaute oder Sonderzeichen hast, geht es dann ?! Nicht das es zu Problemen wegen ClientCodepage und ControlsCodepage gibt.

Weil in der fraglichen Routine wird auf das was die Connection erwartet umcodiert. Im Aufrufstack sieht man die Zeilennummern und auch welche Source genutzt wird.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Zeos schmiert ab

Beitrag von MacWomble »

Bin zwar nur kurz im Büro, aber die Frage fand ich jetzt auch interresant - aber leider liegt es daran wohl auch nicht.
Wenn ich später zurück bin, prüfe ich dennoch auch mal die Einstellungen diesbezüglich in den Datentabellen.

... in der Datenbank ist alles UTF8
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

charlytango
Beiträge: 842
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Zeos schmiert ab

Beitrag von charlytango »

Hi,
da mein Thema auch Datenbanken sind lese ich solche Threads wie hier aufmerksam mit.
Nachdem ich aber kein Crack in den Interna von ZEOS oder FPC bin einfach meine 2cents:

MacWomble hat geschrieben:Nein, dann kommt der Fehler eben nicht.
Er tritt ja auch nicht auf allen meinen Forms auf, sondern nur auf Auftrag, Artikel und Auftragsposition.
Die anderen Forms gehen alle.
Alle Forms sind identisch aufgebaut, das habe ich eben nochmals überprüft. Die Routine ist immer wie im ersten Beitrag des Threads.
Ebenfalls identisch sind die Eigenschaften in TZQuery und Datasource.
... und wie schon mehrfach erwähnt: mit der älteren ZEOS-Version funktioniert alles!


Die Forms scheinen bis auf einige wenige ja zu funktionieren.
Mir fiel auf dass im ganzen Thread nie ein SQL-Monitoring erwähnt wurde.
Besonders mit ZEOS verwende ich standardmäßig den SQL-Monitor den ich die Statements im Debug-Fall in eine Datei schreiben lasse.
Oft hilft auch ein serverseitiges SQL-Monitoring.

Möglicherweise liegt es an den Daten und den SQL-Statements wenn alle anderen Forms funktionieren.

.. just 2 cents ;)

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Zeos schmiert ab

Beitrag von MacWomble »

Danke für den Hinweis.
Doch, das Monitoring (ZEOS-Monitor) läuft mit, zeigt aber im Moment des Problems nichts an.

Irgendwo habe ich das auch mal erwähnt.

Serverseitig müsste ich mal prüfen ...

Das SQL-Statement ist einfach 'Select * from Auftraege Where idauftrag = 10', da kann man im Prinzip ja nichts verkehrt machen. Über ein DataSource wird das an die Editfelder gebunden - thats all. Die Query wird ausgeführt, die Daten werden angezeigt. Wenn ich nun im DBNavigator, der ebenfalls über die DataSource zugreift, auf Edit und dann auf Post klicke, knallt es schon.

Es funktioniert ja auch mit der älteren ZEOS-Komponente ohne Probleme!

Das Programm arbeitet mit UTF8, die Datenbank ist entsprechend eingestellt, passt also auch. Besondere Felder werden in der Datenbank ebenfalls nicht verwendet, bei Artikel sind es nur VarChars und Decimal. (Ich hatte Date im Verdacht, aber das gibt es in Artikel nicht, in Auftrag schon). Index auf PrimaryKey ist vorhanden, weiter Indizes brauche ich hier nicht, da ich über den Key selektiere.

Ich werde jetzt mal versuchen, die Eingabe-Felder alle von der Datenbank zu lösen und eins nach dem anderen wieder anzubinden - vielleicht finde ich ja da etwas heraus. Aber meine Hoffnung ist gering.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Zeos schmiert ab

Beitrag von MacWomble »

Alle Felder von der DataSource gelöst und im DBNavigator Edit - Post geklickt: Fehler tritt ebenfalls auf.

Aber ich habe es endlich geschafft, im Assemblerfenster eine Ausgabe zu sehen. Eventuell kann man da etwas interpretieren:
Dateianhänge
Edit-Post.png
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6197
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Zeos schmiert ab

Beitrag von af0815 »

Nein, da sieht man nichts. Der letzte Aufrufstack war da viel aussagekräftiger. In der Routine SetPAnsiChar in ZDBCChache ab Zeile 4120 geht was schief. Deswegen sieht man im SQLMonitor und sicher auf der DB nichts. Das ist der Zeitpunkt wo das Recordset für den Server hergestellt wird. Soweit ist ja alles noch klar. Auch sieht man, das im String Umlaute vorhanden sind, deswegen bin ich schon mal vorsichtig, da habe ich schon meine Probleme erlebt :-)

Nur da müsste man Anfangen zu Debuggen und einen Breakpoint setzen, dann untersuchen was die Ursache sein könnte. Vor allen ist da die Umwandlung einen PAnsiChar, ist das Feld überhaupt das oder ist es ein AnsiString opder ein UTF8String. Vielleicht ist in der Zuordnung der Felddefinition da schon früher was daneben gegangen.

Aktuell kann ich nur sagen, da eine ist eine sehr frühe 7.3 testing, die jetzt mit der stabilen 7.2.4 verglichen wird.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Zeos schmiert ab

Beitrag von MacWomble »

So, ich habe nun noch etwas weiter gesucht und folgenden Unterschied zwischen der bei mir funktionierenden Version und der aktuellen gefunden.
In ZdbcCache.pas:

... siehe übernächsten Post!

PS: Bevor sich jemand wegen Doppelpost beschwert: Im Zeosforum hat man mich darum gebeten, dort nochmals alles zu beschreiben, da im Lazarusforum derzeit keine Neu-Anmeldung möglich ist und der Maintainer hier keinen Account hat.
Dateianhänge
ANSI.png
Zuletzt geändert von MacWomble am Sa 25. Aug 2018, 19:57, insgesamt 1-mal geändert.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6197
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Zeos schmiert ab

Beitrag von af0815 »

Das ist nicht 100 prozent die gleiche funktion, sieh dir die Parameter an und bei der ersten Variante wird auf eine Erweiterte verwiesen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Zeos schmiert ab

Beitrag von MacWomble »

:oops:

Da war ich zu schnell - du hast natürlich recht!

Der alte Code sieht an betreffender Stelle so aus: (funktioniert)

Code: Alles auswählen

 
    stUnicodeStream, stAsciiStream:
      begin
        Blob := GetBlob(ColumnIndex, IsNull{%H-});
        if Blob.IsClob then
          Blob.SetPAnsiChar(Value, ConSettings^.ClientCodePage^.CP, Len^)
        else
          Blob.SetBuffer(Value, Len^);
      end;
 


der neue dagegen: (verursacht Absturz)

Code: Alles auswählen

 
    stUnicodeStream, stAsciiStream:
      if (Data^ = nil) then
        PIZLob(Data^)^ := TZAbstractCLob.CreateWithData(Value, Len^, ConSettings^.ClientCodePage^.CP, ConSettings)
      else if PIZLob(Data^)^.IsClob then  // in dieser Zeile tritt das Problem tatsächlich auf (Zeile 4120) - beim Bearbeiten eines TDBMemo
        PIZLob(Data^)^.SetPAnsiChar(Value, ConSettings^.ClientCodePage^.CP, Len^)
      else
        PIZLob(Data^)^.SetBuffer(Value, Len^);
 
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Zeos schmiert ab

Beitrag von MacWomble »

So, ich habe das Problem jetzt lokalisiert. Es passiert dann, wenn ich in der Datenbank Felder als Mediumtext definiert habe!

Es sieht so aus, als würden alle MySQL-Stringtypen außer Char, Text und Varchar in das Problem laufen. Es ist also anscheinend ein Fehler mit Mediumtext, TinyText, Blobs in der ZEOS-Library.
Ich werde das im ZEOS-Forum weiter ausdiskutieren und schließe diesen Thread hier ab.

http://zeoslib.sourceforge.net/viewtopi ... 15#p101415

Vielen Dank für die richtungsweisenden Hinweise!
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: [Erledigt: zu ZEOS verlagert] Zeos schmiert ab

Beitrag von MacWomble »

PilotLogic hat mir eine funktionierende ZEOS-Komponente (wohl aus der aktuellen ZEOS SVN) zugesandt. Es funktioniert wieder alles.

ZeosDBO_SVN_5018
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Antworten