Hallo zusammen,
habe das folgende kleine/große Problem:
Die Verbindung zum
MySQL-Server wird über die
ODBC-Schnittstelle zum
MySQL ODBC Driver hergestellt.
Es kann durchaus vorkommen, dass sich der
MySQL-Server verabschiedet hat und somit kein Zugriff auf die Datenbank möglich ist. Diesen Fehler fange ich so ab:
Delphi-Quellcode:
...
try
SQL_Funktion();
except
Err := AdoConnection.Errors.Item[AdoConnection.Errors.Count - 1].Description;
if Pos('
MySQL server', Err) > 0
then
begin
AdoConnection.Close;
try
AdoConnection.Open;
except
Showmessage('
Server connection failed!' + #13 + '
Application will be closed!');
Application.Terminate;
end;
end;
end;
Falls ein Fehler in der
SQL-Funktion auftritt, hole ich mir in der except-Routine den letzten Fehler aus der Datenbank. Falls in dieser Meldung "
MySQL server" auftritt, dann versuche ich die Verbindung zu schließen und erneut aufzumachen.
Hier passiert schon der erste Fehler. Da das Netzwerkkabel ausgestöpselt ist, kann die Datenbank nicht erfolgreich verbunden werden, aber er sagt trotzdem dass die Verbindung steht (AdoConnection.Connected = true).
Der zweite Fehler der dann folgt ist, dass ich eben ein Dataset habe, welches immer wieder im Timer einen
SQL Befehl ausführt. Und da die Datenbankverbindung nicht steht, kann somit das Dataset auch keine Anweisung ausführen. Was dann zwnagsläufig zu einer Endlosschleife führt.
Ich hoffe mir kann da jemand wieterhelfen.
Gruß, Moony
Scheinbar verbindet die
ODBC-Schnittstelle nicht wirklich wieder die Datenbank, sondern holt die Verbindung aus dem Cache.