Hey,
da ich mich abseits von SAMP mal wieder mit MySQL beschäftigen muss,
habe ich mir die neuste MySQL Version (R39-3) angeguckt und mal wieder ein kleines Script gemacht.
Allerdings habe ich jetzt ein Problem mit der Funktion 'mysql_errno ',
früher gab es dafür ja 'mysql_ping ', jetzt allerdings nicht mehr.
Wenn ich jetzt den Server starte und die Datenbank online oder offline ist,
dann wird das auch mithilfe der Funktion 'if(mysql_errno(mysql) != 0) ' korrekt erkannt.
Nun möchte ich auch im Script feststellen können, ob die Verbindung zur Datenbank noch besteht (per Timer).
Das habe ich ebenfalls mit 'if(mysql_errno(mysql) != 0) ' versucht, genau wie oben,
allerdings funktioniert das nicht, denn selbst wenn die Datenbank dann offline ist,
meint das Script trotzdem, dass die Verbindung zur Datenbank noch besteht.
Gibt es dafür eine Lösung, eine andere Vorgehensweise, eine andere Funktion?
Danke im voraus
//EDIT:
Lösung!
Hat sich erledigt! Die Funktion 'mysql_errno ' arbeitet etwas anders, als ich dachte.
Für alle, die eventuell das gleiche Problem haben: Die Funktion überprüft nicht die Verbindung zur Datenbank,
denn sie gibt aus, ob es beim letzten Ausführen der angegebenen Funktion einen Fehler gab.
Deswegen funktioniert das Ganze auch beim ersten Mal, später aber nicht mehr, da dann immernoch überprüft wird,
ob es bei der ersten Verbindung zur Datenbank einen Fehler gab (logischerweise wird dann nicht die aktuelle Verbindung überprüft).
Meine erste Lösung für das Problem war, die Verbindung zur MySQL Datenbank mit 'mysql_close ' zu beenden,
diese dann wiederherzustellen und dann zu prüfen, ob die erneute Verbindung erfolgreich war.
Das ist natürlich eine sehr schlechte und umständliche Lösung, deswegen habe ich es mit einer anderen Funktion provisorisch gelöst:
new Unused[1];
new DatabaseOnline = mysql_stat(Unused); //Versucht Stats von der Datenbank zu lesen (Uptime etc.) -> Falls die Datenbank offline ist, gibt 'mysql_errno' einen Fehler aus
if(mysql_errno(DatabaseOnline) != 0) //Verbindung zur Datenbank abgebrochen, da es einen Fehler gibt
{
//Code...
}
Ich hoffe, dass falls einer das selbe dumme Problem hat, was nur dadurch entsteht, dass es 'mysql_ping ' nicht mehr gibt, jetzt eine Lösung hat