C++ -> MySQL: "mysql server has gone"

mats_MF

Mitglied
Hi,

ich habe auf einem PC zwei Anwendungen laufen, wo Messdaten in eine SQL-Tabelle (5.0) geschrieben werden.

Übers Wochenende ist bei einer Software die Verbindung zwischen SQL-Server abhanden gekommen ("mysql server has gone" wenn eine SQL-Befahl ausgeführt werden soll). Die Software lioef ganz nocmal weiter und die Threads sind auch nicht abgestürzt, nur die Datenaufzeichneung erfolgte nicht mehr.:mad::mad:

Bei der anderen Softwareversion, die mit unabhängigen Threads auf den selben Server zugreift lief alles wie bisher - also kein Fehler.:rolleyes:

Die SQL-Statements bearbeite ich mit try/catch und führe Fehlerroutinen aus; logge diese mit und es sollten keinen Fehler unbehandelt bleiben.

Wieso also kann nur bei einer der gleichen SW die Verbindung mit dem Server verloren gehen? :confused::confused:liegt es Vielleicht am ODBC-Consumer (MySQL ODBC 5.1 Driver)?

Vielleicht hat jemand ja eine idee oder selbe Erfahrungen gemacht.

Danke & Gruß
 
Lösungen:

Timouts ändern:
Code:
db.SetLoginTimeout(DWORD(10));
db.SetQueryTimeout(DWORD(10));

ohne ODBC-Dialog neue Verbindung erstellen (DSNstring beeinhaltet die DSN aus dem protecten member m_strConnect, die mit der Memberfunktion Get.Connect() ausgelesen werden kann)
Code:
db.Open( DSNstring,FALSE,FALSE,_T("ODBC;DSN"+DSNstring+";UID=root;PWD=rohrmotor"),TRUE);

ebenso kann im "Command line Client" die "max_allowed_packet" Variable geändert werden, um mehr speicher für große Tabellen allocieren.

Damit werden bem "catsch" des Fehlerbuffers keine der folgenden Fehler mehr auftreten:

"Commands out of sync; you can´t run this command now"
"Connection lost during query"
"MySql Server has gone away"

juchuuuuuuuuuuuuuuu
 
Zurück