2016-07-11 14 views
0

Ich versuche herauszufinden, wie Sie die MySQL Connection/Thread-ID mit Connector C++ erhalten.MySQL C++ Connector: Wie bekomme ich die Thread/Verbindungs-ID?

mysql_thread_id (MYSQL *) scheint nur für diese verfügbar sein, aber ich bin mir nicht sicher, wie eine Instanz von MYSQL aus dem Connector C++ abgerufen werden.

Was ich versucht habe:

int threadId = mysql_thread_id(NULL); 

Aber das gibt nur Null.

Irgendwelche Ideen?

Antwort

1

Die Funktion mysql_thread_id() erwartet einen Zeiger auf ein Verbindungsobjekt, das von der mysql_connect (...) Funktion der nativen MySQL C API erstellt wurde. Connector/C++ hat dieses Objekt sehr tief vergraben (ich schaute). Die von der MySQL-Dokumentation here vorgeschlagene Alternative besteht darin, die Abfrage SELECT CONNECTION_ID() auszuführen, und das zurückgegebene Ergebnis ist die ID, nach der Sie suchen.

+0

Die Signatur ist zwar mysql_thread_id (MYSQL * mysql), dies sollte aber nicht funktionieren (Sie übergeben eine SQL :: Connection * anstelle von MYSQL *). Ich habe es auch ausprobiert und bekomme wie erwartet einen Kompilierungsfehler. – wizurd

+0

Das Übergeben des Verbindungszeigers funktioniert, wenn Sie die systemeigene MySQL-C-API verwenden, scheint aber nicht mit Connector/C++ - Verbindungsobjekten zu funktionieren. Eine Alternative wäre, die Abfrage SELECT CONNECTION_ID() auszuführen und das Ergebnis abzurufen (http://dev.mysql.com/doc/refman/5.7/en/mysql-thread-id.html). –

+0

Ich habe meine Antwort bearbeitet, um die alternative Lösung zu zeigen :) –