AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Seltsame Ergebnisse

Ein Thema von Delbor · begonnen am 3. Apr 2017 · letzter Beitrag vom 3. Apr 2017
Antwort Antwort
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.156 Beiträge
 
Delphi 11 Alexandria
 
#1

Seltsame Ergebnisse

  Alt 3. Apr 2017, 12:26
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:
...
  Self.EdiSessionVarName.Text := IntToStr(FDMySQLDml.MySQLCorrespondent.MaxAllowedPacket);
  Self.UpDSessionVarMB.Position := Round(FDMySQLDml.MySQLCorrespondent.MaxAllowedPacket/1048576);
...
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.

Ein Klick auf das UpDown verändert nun den Positionswert und damit den Wert der Edits:
Delphi-Quellcode:
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;
Hier wird der Text rot dargestellt, um deutlich zu machen, dass der neue Wert noch nicht dem Server übergeben wurde.
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:
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;
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...

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:
  • Bild 1 zeigt die Box gleich naach dem Programmstart
  • Bild 2 zeigt die Box nach dem Betätigen des TUpDown
  • Bild 3 zeigt die Box nach anklicken des Ändern-Buttons
Was, zum Kuckuck, mache ich falsch?

Gruss
Delbor
Miniaturansicht angehängter Grafiken
maxallowed-gui-programmstart.jpg   maxallowed-gui-programmstart-geaendert.jpg   maxallowed-gui-aenderbutton-geklickt.jpg  
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
ISurf

Registriert seit: 1. Mär 2016
6 Beiträge
 
#2

AW: Seltsame Ergebnisse

  Alt 3. Apr 2017, 14:25
Hallo,
Google hat mich zu diesem SO Thread geführt:
http://stackoverflow.com/questions/8...ed-packet-size

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."
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.156 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Seltsame Ergebnisse

  Alt 3. Apr 2017, 15:01
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
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor ( 3. Apr 2017 um 15:13 Uhr)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.156 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Seltsame Ergebnisse

  Alt 3. Apr 2017, 15:46
Hi zusammen

Wohl ahnts schon jeder, doch hier trotzdem noch die Lösung des Problems:
Delphi-Quellcode:
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;
Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: Seltsame Ergebnisse

  Alt 3. Apr 2017, 19:13
Bitte gebe deinem Thread einen aussagekräftigen Titel. Und er gehört wohl auch eher nach Datenbabnken oder?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
3. Apr 2017, 19:15
Dieses Thema wurde am "03. Apr 2017, 20:15 Uhr" von "Daniel" aus dem Forum "Object-Pascal / Delphi-Language" in das Forum "Datenbanken" verschoben.
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf