![]() |
Seltsame Ergebnisse
Liste der Anhänge anzeigen (Anzahl: 3)
Hi zusammen
Um mir die Session-Variable meiner MySQL-DB anzuzeigen und sie gegebenenfalls ändern zu können, habe ich folgende Konstrukte: In FormCreate der Hauptform:
Delphi-Quellcode:
Nach Programmstart zeigen sich mir in der Werkzeugleiste 2 Edits, wie die Anhänge das zeigen. Beide sind ReadOnly, das kleinere ist mit einem TUpDown verbunden und zeigt dessen Positionswert an, der einen Megabytewert darstellt. Das Grössere zeigt diesen Wert in Bytes umgerechnet - dieser Wert wird schlussendlich auch in die Sessionvariable MaxAllowedPacket des Servers geschrieben/von da gelesen.
...
Self.EdiSessionVarName.Text := IntToStr(FDMySQLDml.MySQLCorrespondent.MaxAllowedPacket); Self.UpDSessionVarMB.Position := Round(FDMySQLDml.MySQLCorrespondent.MaxAllowedPacket/1048576); ... Ein Klick auf das UpDown verändert nun den Positionswert und damit den Wert der Edits:
Delphi-Quellcode:
Hier wird der Text rot dargestellt, um deutlich zu machen, dass der neue Wert noch nicht dem Server übergeben wurde.
procedure TCM_First.UpDSessionVarMBClick(Sender: TObject; Button: TUDBtnType);
begin EdiSessionVarMB.Text := IntToStr(UpDSessionVarMB.Position); EdiSessionVarName.Font.Color := clred; EdiSessionVarName.Text := IntToStr(UpDSessionVarMB.Position * 1048576); end; Entsprechen die Werte den Wünschen des Users, muss dieser nun den nebenstehenden'Ändern'-Button anklicken, um den Wert in die Sessionvariable zu schreiben:
Delphi-Quellcode:
In ChooseMaxAllowedPacket soll der neue Wert ausgelesen und den beteiligten Kmponenten zugewiesen werden. Die letzte Zeile habe ich eingefügt; aber diese Anweisung wäre offenbar gar nicht nötig. Und abei dachte ich schon, ich hätte das Problem gelöst...
procedure TCM_First.BtnChangeClick(Sender: TObject);
begin FDMySQLDml.MySQLCorrespondent.MaxAllowedPacket := UpDSessionVarMB.Position * 1048576; ChooseMaxAllowedPacket; end; procedure TCM_First.ChooseMaxAllowedPacket; begin EdiSessionVarName.Font.Color := clWindowText; EdiSessionVarName.Text := IntToStr(FDMySQLDml.MySQLCorrespondent.MaxAllowedPacket); UpDSessionVarMB.position := Round(FDMySQLDml.MySQLCorrespondent.MaxAllowedPacket/1048576); EdiSessionVarMB.Text := IntToStr(UpDSessionVarMB.Position); end; Im Anhang finden sich einige Jpegs, die die Werte zu verschiedenen Zeitpunkten darstellen. Ganz offenbar wird zwar die Servervariable geändert, mir aber erst nach einem Programmneustart die Änderung auch dargestellt. Nachdem ich mir die Jpegs nach dem Hochladen per Vorschau angesehen habe, hier doch noch einige Erläuterungen:
Gruss Delbor |
AW: Seltsame Ergebnisse
Hallo,
Google hat mich zu diesem SO Thread geführt: ![]() Darin steht folgendes, was auch zu deiner Beschreibung passen würde: "It shows the old value because max_allowed_packet doesn't change for existing connections. If you disconnect and reconnect you'll see the updated value." Evtl. auch noch interessant für dich: "However, if you do not change it in the my.ini file (as dragon112 suggested), the value will reset when the server restarts, even if you set it globally." |
AW: Seltsame Ergebnisse
Hi ISurf
Vielen Dank für deine aufschlussreiche Antwort! Den Server per Delphi zu starten/beenden, hab ich auch schonmal versucht. Das Ding läuft bei mir als Dienst und somit eben auch dann, wenn ich ihn gar nicht benötige. Seit einiger Zeit gibt es zwar MySQL Notifier, mit dem sich MySQL aus der Taskleisten steuern lässt. Oder MySQL Workbench, aber das ist nicht wirklich befriedigend. Aber das mit der Connection sollte realisierbar sein. Und ich hatte schon die Idee, ich greife zu oft darauf zu... Ausser der manuellen Bearbeitung der mi.ini lässt sich Maxallowedpacked auch in der Workbench ändern. Nur geht eigentlich auch das am Ziel vorbei. Denn so kann ich zumindest dafür sorgen, dass der Server auch die grösseren meiner Daten akzeptiert, ohne dass er sich verabschiedet und ich die ganze Chose neeu aufgleisen muss. Gruss Delbor |
AW: Seltsame Ergebnisse
Hi zusammen
Wohl ahnts schon jeder, doch hier trotzdem noch die Lösung des Problems:
Delphi-Quellcode:
Gruss
procedure TCM_First.BtnChangeClick(Sender: TObject);
begin FDMySQLDml.MySQLCorrespondent.MaxAllowedPacket := UpDSessionVarMB.Position * 1048576; FDMySQLDml.FDConnectionMySql.Connected := False; // Diese beiden Zeilen bewirken wunder FDMySQLDml.FDConnectionMySql.Connected := true; ChooseMaxAllowedPacket; end; Delbor |
AW: Seltsame Ergebnisse
Bitte gebe deinem Thread einen aussagekräftigen Titel. Und er gehört wohl auch eher nach Datenbabnken oder?
|
Dieses Thema wurde am "03. Apr 2017, 20:15 Uhr" von "Daniel" aus dem Forum "Object-Pascal / Delphi-Language" in das Forum "Datenbanken" verschoben.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz