MySQL Forums
Forum List  »  German

SQL-Verbindungsfehler bei längerer Zeit
Posted by: Philipp Mitterrutzner
Date: August 25, 2021 03:37PM

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") {
...
}

Options: ReplyQuote


Subject
Views
Written By
Posted
SQL-Verbindungsfehler bei längerer Zeit
216
August 25, 2021 03:37PM


Sorry, only registered users may post in this forum.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.