ZEOS8-mySQL-Lazarus3.4 Probleme beím speichern
-
- Beiträge: 5
- Registriert: Di 2. Jul 2024, 11:40
- OS, Lazarus, FPC: Windows11Pro (Lazarus 3.4 FPC 3.2.2)
- CPU-Target: Win64
ZEOS8-mySQL-Lazarus3.4 Probleme beím speichern
Ich habe auf Lazarus 3.4 und ZEOS 8 aktualisiert und habe nun Probleme bei der Aktualisierung von mySQL-Tabellen.
die ersten beiden Datensätze speichert er, beim dritten DS kommt die Meldung "0 record(s) updated. Only one record should have been updated."
Die Aktualisierung hatte unter ZEOS 7 problemlos funktioniert. Die Tabelle hat auch einen Index. Welches Feld man ändert, spielt keine Rolle.
die ersten beiden Datensätze speichert er, beim dritten DS kommt die Meldung "0 record(s) updated. Only one record should have been updated."
Die Aktualisierung hatte unter ZEOS 7 problemlos funktioniert. Die Tabelle hat auch einen Index. Welches Feld man ändert, spielt keine Rolle.
Re: ZEOS8-mySQL-Lazarus3.4 Probleme beím speichern
Hallo Uwe,
wie lautet der Wert der Zeos Property CLIENT_FOUND_ROWS? In der Vergangenheit gab es diesbezüglich ein Problem, das mit Hilfe des Parameters gelöst werden konnte:
wie lautet der Wert der Zeos Property CLIENT_FOUND_ROWS? In der Vergangenheit gab es diesbezüglich ein Problem, das mit Hilfe des Parameters gelöst werden konnte:
Vielleicht hat sich zwischen 7 und 8 der Default geändert?The TZUpdateSQL component will raise an error if a record is posted to the connected Dataset where no values were changed. This is because MySQL / MariaDB returns the number of changed records by default. If a record didn't change, 0 is returned instead. See https://dev.mysql.com/doc/refman/8.0/en ... -rows.html for more information. This can be mitigated by adding "CLIENT_FOUND_ROWS=1" to the TZConnection.Properties property.
-
- Beiträge: 5
- Registriert: Di 2. Jul 2024, 11:40
- OS, Lazarus, FPC: Windows11Pro (Lazarus 3.4 FPC 3.2.2)
- CPU-Target: Win64
Re: ZEOS8-mySQL-Lazarus3.4 Probleme beím speichern
Hallo Stevie,
in der Diff-List steht der Parameter CLIENT_FOUND_ROWS gar nicht drin, nach manuellem Eintrag wird er wieder entfernt. Es scheint, den gibt es nicht mehr...
Gruß Uwe
in der Diff-List steht der Parameter CLIENT_FOUND_ROWS gar nicht drin, nach manuellem Eintrag wird er wieder entfernt. Es scheint, den gibt es nicht mehr...
Gruß Uwe
-
- Beiträge: 5
- Registriert: Di 2. Jul 2024, 11:40
- OS, Lazarus, FPC: Windows11Pro (Lazarus 3.4 FPC 3.2.2)
- CPU-Target: Win64
Re: ZEOS8-mySQL-Lazarus3.4 Probleme beím speichern
Ich habe bisher immer nur die TZConnection, TZTable sowie TZQuery genutzt.
Jetzt habe ich die Tabelle mit einer TZUpdateSQL verbunden und es funktioniert
- das war bisher nicht notwendig.
Gruß Uwe
Jetzt habe ich die Tabelle mit einer TZUpdateSQL verbunden und es funktioniert

Gruß Uwe
-
- Beiträge: 5
- Registriert: Di 2. Jul 2024, 11:40
- OS, Lazarus, FPC: Windows11Pro (Lazarus 3.4 FPC 3.2.2)
- CPU-Target: Win64
Re: ZEOS8-mySQL-Lazarus3.4 Probleme beím speichern
Ich war etwas voreilig
es kommt zwar keine Fehlermeldung, aber nach einem Refresh ist alles wieder weg
Da muss ich mich erstmal mit der Komponente befassen - muss ich wohl selbst definieren, was passieren soll.
Gruß Uwe


Da muss ich mich erstmal mit der Komponente befassen - muss ich wohl selbst definieren, was passieren soll.
Gruß Uwe
-
- Beiträge: 1096
- 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: ZEOS8-mySQL-Lazarus3.4 Probleme beím speichern
Kannst du ein kleines Projekt posten, das diesen Fehler darstellt? (Idealerweise gegen SQLite oder ein mitgeliefertes Create-Statement für die Tabelle )
Nachdem ich auch mit ZEOS arbeite, interessieren mich seltsame Fehler und deren Vermeidung sehr.
Was mich etwas wundert ist, dass du TZTable verwendest, das hab ich seit vielen Jahren nicht mehr benutzt. Aber das ist wohl individueller Stil.
Als Tip, weil das oft mal schnell untergeht: Ich benutze bei meiner DB Verbindung immer TZSQLMonitor, den ich bei Problemen dazu schalte und der mir Statements und vieles andere in ein log protokolliert, da sieht man oft auch schon mehr.
Nachdem ich auch mit ZEOS arbeite, interessieren mich seltsame Fehler und deren Vermeidung sehr.
Was mich etwas wundert ist, dass du TZTable verwendest, das hab ich seit vielen Jahren nicht mehr benutzt. Aber das ist wohl individueller Stil.
Als Tip, weil das oft mal schnell untergeht: Ich benutze bei meiner DB Verbindung immer TZSQLMonitor, den ich bei Problemen dazu schalte und der mir Statements und vieles andere in ein log protokolliert, da sieht man oft auch schon mehr.
Re: ZEOS8-mySQL-Lazarus3.4 Probleme beím speichern
Also, ich habe gerade mal die aktuelle Version ausgecheckt und gesucht. Danach gibt es den Parameter durchaus und zwar in der Datei ZPlainMySqlDriver.pas:
Laut Dokumentation kann man die auch setzen:
Code: Alles auswählen
...
TMYSQL_CLIENT_OPTIONS =
( CLIENT_LONG_PASSWORD, { = 1; new more secure passwords }
CLIENT_FOUND_ROWS , { = 2; Found instead of affected rows }
CLIENT_LONG_FLAG , { = 4; Get all column flags }
CLIENT_CONNECT_WITH_DB , { = 8; One can specify db on connect }
CLIENT_NO_SCHEMA , { = 16; Don't allow database.table.column }
...
Danach sollte der Parameter also auch noch in Zeos 8 existieren. Hast Du mal versucht, das Property programmatisch zu setzen? So etwas wie...
all mysql_real_connect clientflags are now supported using the names from the enum type below.
TMYSQL_CLIENT_OPTIONS =
( CLIENT_LONG_PASSWORD, { = 1; { new more secure passwords }
CLIENT_FOUND_ROWS , { = 2; { Found instead of affected rows }
CLIENT_LONG_FLAG , { = 4; { Get all column flags }
...
Code: Alles auswählen
ZConnection.Properties.Add('CLIENT_FOUND_ROWS=1');
-
- Beiträge: 5
- Registriert: Di 2. Jul 2024, 11:40
- OS, Lazarus, FPC: Windows11Pro (Lazarus 3.4 FPC 3.2.2)
- CPU-Target: Win64
Re: ZEOS8-mySQL-Lazarus3.4 Probleme beím speichern
Hallo Stevie,
Ich habe in den betreffenden Tabellen die beiden zutreffenden Felder gemeinsam zum Primärindex gemacht, da funktioniert es wie gewollt.
Das war bisher nicht notwendig gewesen (sind nur kleine Tabellen und sollten eigentlich in der Reihenfolge bleiben wie in der gelieferten Liste).
Danke für Eure Hilfe.
P.S. im log des Monitors standen keine auffälligen Einträge.
das habe ich jetzt mal gesetzt, ändert am Verhalten jedoch nichts...ZConnection.Properties.Add('CLIENT_FOUND_ROWS=1');
Ich habe in den betreffenden Tabellen die beiden zutreffenden Felder gemeinsam zum Primärindex gemacht, da funktioniert es wie gewollt.
Das war bisher nicht notwendig gewesen (sind nur kleine Tabellen und sollten eigentlich in der Reihenfolge bleiben wie in der gelieferten Liste).
Danke für Eure Hilfe.
P.S. im log des Monitors standen keine auffälligen Einträge.