SQL-Verbindungsfehler bei längerer Zeit
Hey, ich bin wieder hier.
Bei mir wird die SQL-verbindung getrennt, wenn ich ca. 15 sec warte und danach den Wert eingebe und bestätige, die mysql_real_conn() gibt mir auch kein Wert zurück. Ich bekomme diesen fehler: ERROR: Query failed This handle is already connected. Use a separate handle for each connection.
Ich vermute, dass der timer zu kurz ist oder es sowas wie eine reconnection oder autoconnection brauchte, ich habe einwenig recherchiert und ich habe herausgefunden, dass ich soetwas wie "con->setClientOption("OPT_RECONNECT", &true);
" machen sollte. Jedoch habe ich mySQL nicht so eingebunden, dass diese möglichkeit funktioniert, ich kann mySQL auch nur so einbinden da ich ein freamwork verwende wo es nur auf dieser Weiße möglich ist.
#include <mysql.h>
int qstate;
int SQLQuery(std::string ID)
{
MYSQL* conn;
MYSQL_ROW row;
MYSQL_RES* res;
char* key;
conn = mysql_init(0);
mysql_real_connect(conn, "localhost", "EQ", "Kennwort0", "eq", 3306, NULL, 0);
if (conn) {
std::ostringstream str;
str << "SELECT * FROM users WHERE UserID='" << ID <<"';";
std::string sql = str.str();
qstate = mysql_query(conn, sql.c_str());
if (!qstate) {
res = mysql_store_result(conn);
if (res->row_count == 0) {
return 0;
}
while (row = mysql_fetch_row(res)) {
if (row[0] == ID) {
if (atoi(row[7]) == 1) {
return 1;
}
else {
return 0;
}
}
}
}
else {
return 0;
}
}
else {
return 0;
}
}
Hier wird die Funktion aufgerufen:
auto future = std::async(std::launch::async, &SQLQuery, ID);
int valueSQLQuery = future.get();
if (valueSQLQuery == 0 || ID.length() != 13 || ID == "0") {
...
}