Mysqlverbindung instabil
Mysqlverbindung instabil
Hallo,
Habe beobachtet, dass sich meine Mysqlconnection nach einigen Stunden ohne Traffic einfach abmeldet. Habe die Option Keepconnection auf true gestellt (SQLdb) - ohne Wirkung.
Habe auch gelesen, dass Mysql die Verbindungen nach einem def. Timeout trennt um Ressourcen zu sparen, was ja ggf. Sinn macht. Trozdem ist erst nach Neustart des OS die Verbindung wieder hergestellt.
Da bestimmt einige von euch auch mit mysql arbeiten: Wie löst ihr das Problem wenn ihr nur alle paar std. die Verbindung beanspruchen müsst. Danke für evtl. Tips im Vorraus.
Habe beobachtet, dass sich meine Mysqlconnection nach einigen Stunden ohne Traffic einfach abmeldet. Habe die Option Keepconnection auf true gestellt (SQLdb) - ohne Wirkung.
Habe auch gelesen, dass Mysql die Verbindungen nach einem def. Timeout trennt um Ressourcen zu sparen, was ja ggf. Sinn macht. Trozdem ist erst nach Neustart des OS die Verbindung wieder hergestellt.
Da bestimmt einige von euch auch mit mysql arbeiten: Wie löst ihr das Problem wenn ihr nur alle paar std. die Verbindung beanspruchen müsst. Danke für evtl. Tips im Vorraus.
-
- Beiträge: 205
- Registriert: So 2. Dez 2007, 20:47
- OS, Lazarus, FPC: Windows XP Lazarus immer neueste Version
- CPU-Target: xxBit
- Wohnort: Schweiz
Re: Mysqlverbindung instabil
SQLDB ist leider nicht so stabil. Muss noch überarbeitet werden. Nimm Zeos.
Peter
Peter
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: Mysqlverbindung instabil
Das hat mit dem problem doch rein gar nichts zu tun. Ich könnt auch sagen mysql darf nicht kommerziell frei eingesetzt werden nimm firebird. Tut genausiviel zur thematik.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Re: Mysqlverbindung instabil
um mal beim Thema zu bleiben, wieso hältst du die Verbindung überhaupt solange offen?
Ich würde nach dem was du geschrieben hast, ja den anderen Weg gehen und die Verbindung nur aktivieren, wenn sie auch gebraucht wird. Bzw. wieso braucht es einen Neustart des Betriebssystems, das kann ja keine Lösung sein. Was passiert denn, wenn du die Verbindung neu Aufbauen willst, ohne Neustart...Fehler?
Ich würde nach dem was du geschrieben hast, ja den anderen Weg gehen und die Verbindung nur aktivieren, wenn sie auch gebraucht wird. Bzw. wieso braucht es einen Neustart des Betriebssystems, das kann ja keine Lösung sein. Was passiert denn, wenn du die Verbindung neu Aufbauen willst, ohne Neustart...Fehler?
Johannes
-
- Beiträge: 155
- Registriert: Mi 22. Aug 2007, 14:52
- OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 65719 Hofheim am Taunus
- Kontaktdaten:
Re: Mysqlverbindung instabil
Habe bisjetzt dafür nur ZeosDB (6.6.2) eingesetzt, damit gab es nie Probleme.
Habe aber auch nie die Verbindung länger offen gehabt als nötig, d.h. ZConnection öffnen, Abfrage öffnen, Daten einlesen (in eigene Textliste, StringGrid - kein DBGrid, oder was auch immer), Abfrage schliessen, ZConnection schliessen.
Den Programmbenutzer die Daten verändern/editieren/neue-Schreiben-lassen/was-auch-immer, und wieder im Millisekunden-Bereich: Connection öffnen, INSERT/UPDATE-Statement loslassen, Connection schliessen.
Ich denke, dieses Vorgehen spart auch Resourcen auf dem MySQL-Server.
Habe aber auch nie die Verbindung länger offen gehabt als nötig, d.h. ZConnection öffnen, Abfrage öffnen, Daten einlesen (in eigene Textliste, StringGrid - kein DBGrid, oder was auch immer), Abfrage schliessen, ZConnection schliessen.
Den Programmbenutzer die Daten verändern/editieren/neue-Schreiben-lassen/was-auch-immer, und wieder im Millisekunden-Bereich: Connection öffnen, INSERT/UPDATE-Statement loslassen, Connection schliessen.
Ich denke, dieses Vorgehen spart auch Resourcen auf dem MySQL-Server.
-
- Beiträge: 155
- Registriert: Mi 22. Aug 2007, 14:52
- OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 65719 Hofheim am Taunus
- Kontaktdaten:
Re: Mysqlverbindung instabil
Neuer Erfahrungsbericht über Lazarus SQLdb-Komponenten (kein ZEOS):
Habe drei Anwendungen so programmiert:
@starkard: ¿Könnte es an Deinem MySQL-Server liegen, dass dort eine Art Timeout eingestellt ist, der die Verbindung schliesst? Bin nicht soooo der MySQL-Server-Crack, habe bis jetzt immer nur "Standardinstallation" für einen MySQL-Server gemacht (von der Mandriva 2006 und 2008 DVD).
Habe drei Anwendungen so programmiert:
- FormCreate öffnet MySQLConnection,
- Während des Programmlaufs, auf Events von ListBox- und Button-Clicks etc.:
SQLQuery wird nur solange auf Active gesetzt, wie zum Einlesen der Daten benötigt wird (wohl nur Millisekunden), dann wieder geschlossen. - FormDestroy schliesst MySQLConnection (jeweils nach Stunden, habe die Anwendung immer 8 Stunden pro Tag offen).
@starkard: ¿Könnte es an Deinem MySQL-Server liegen, dass dort eine Art Timeout eingestellt ist, der die Verbindung schliesst? Bin nicht soooo der MySQL-Server-Crack, habe bis jetzt immer nur "Standardinstallation" für einen MySQL-Server gemacht (von der Mandriva 2006 und 2008 DVD).
Re: Mysqlverbindung instabil
Zuständig ist die globale Variable wait_timeout von MySQL welche standardmäßig auf 8 Std. (28800 Sek.) eingestellt ist.
http://dev.mysql.com/doc/refman/5.1/en/ ... it_timeout" onclick="window.open(this.href);return false;
Auslesen kannst du den Wert mit
Umstellen kannst du es mit
nur ausschalten kannst du diesen nicht
http://dev.mysql.com/doc/refman/5.1/en/ ... it_timeout" onclick="window.open(this.href);return false;
Auslesen kannst du den Wert mit
Code: Alles auswählen
SHOW variables LIKE 'wait_timeout'
Code: Alles auswählen
SET wait_timeout = nnn
-
- Beiträge: 1581
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Mysqlverbindung instabil
Hallo, ich mache alle paar Minuten eine Query mit der Abfrage "SELECT ID FROM tabelleyyyy WHERE 0 = 1". Das bringt keinen einzigen Datensatz, hält dafür die Verbindung ewig.
EleLa - Elektronik Lagerverwaltung - www.elela.de