C-API MySQL



  • Hallo Leute

    ich hab ein Problem mit der C-MYSQL-API:
    http://dev.mysql.com/doc/refman/5.1/de/c-api-function-overview.html

    Ganz selten scheint die Query-Abfrage nicht richtig zu funktionieren und es kommt nix zurück. Ich weiß nicht wo es dann hängt, aber man kann dann das Programm nur noch abschießen. Es liegt sicherlich nicht an der API sondern an der Datenbank ( hatte das Problem auch schon mit anderen MYSQL-APIs bei dieser Datenbank.
    Nun stelle ich mir die Frage, wie ich so eine Query-Abfrage entweder per timeout oder per funktion anhalten kann, so dass ich dann einfach mit dem nächsten Query weiter machen kann.

    Ich hatte mir überlegt, die Abfrage selber in einen Thread zu packen und nebenbei noch einen Timer-Thread laufen zu lassen, der dann nach abgelaufener Zeit die Query-Anfrage abbricht, aber ich habe leider in der C-API-Funktionsbeschreibung keine Hinweise auf eine derartige Funktion oder ein automatisches Timeout gefunden...

    Kennt sich jemand zufällig mit der API aus, oder hat eine andere Idee, gern auch von der brachialen Sorte 😉



  • Als Erstes würde ich mich beim "Hängen" per Konsole in mysql einloggen, und mit SHOW PROCESSLIST; nachsehen, was dort gerade getrieben wird.

    Was die Funktion zum "Abschießen" betrifft, so lautet sie "KILL <processid>;". Diesen müsstest du manuell eingeben, die ID steht in der Prozesslist von SHOW PROCESSLIST; .

    Ansonsten:

    die von dir gelinkte Doku schrieb:

    mysql_kill() Hält einen gegebenen Thread an
    mysql_list_processes() Liefert eine Liste der aktuellen Server-Threads

    sind wohl die Befehle, die den obigen Konsolenbefehlen entsprechen.


Anmelden zum Antworten