[GELÖST] MySQL R39 - mysql_errno Verbindungsüberprüfung

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • 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:


    CSS
    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 :)

    YouTube: HardyFiveLP
    facebook: HardyFiveLP

    4 Mal editiert, zuletzt von Hardy535 () aus folgendem Grund: #1: Lösung gefunden! #2: Formatierung #3: Rechtschreibung