Есть два круга этих вопросов, которые я знаю, но ни один из них не был похож на мою проблему, поэтому я решил, что спрошу. У меня настроен сервер, который проверяет клиентов, которые подключаются к нему, получая комбинации имени пользователя и пароля и проверяя их с помощью SQL-запроса. Я написал систему, и она работала отлично в течение первых двух запросов.MySQL Api: Потерянное соединение с сервером MySQL во время запроса
http://puu.sh/d9mss/384b4df9f0.png
Однако, я обнаружил, что если я ждать около 5 минут, а затем повторите попытку подключения, это происходит.
http://puu.sh/d9mx7/192cbb2cfc.png
Это код, который я бегу, чтобы выполнить эту задачу.
bool CNetDatabase::AuthUser(std::string username, const unsigned char* passwordhash)
{
RoughSanitizeString(username); //this doesn't do anything
/* Turn password hash into string */
std::ostringstream password;
password.fill('0');
password << std::hex;
for (int i = 0; i < 20; i++)
{
password << std::setw(2) << (unsigned int)passwordhash[i];
}
/* Make request */
MYSQL_RES* result = nullptr;
if (mysql_query(sql_con, tools::string::format(
"SELECT COUNT(`index`) FROM `Users` WHERE `username` = '%s' AND `password` = '%s'",
username.c_str(), password.str().c_str()).c_str()))
{
fprintf(
stderr,
"ERROR: mysql_query failed: %s [%d]\n",
mysql_error(sql_con), mysql_errno(sql_con));
return false;
}
/* Get and return result */
result = mysql_store_result(sql_con);
MYSQL_ROW row = mysql_fetch_row(result);
mysql_free_result(result);
return row[0][0] == '1' ? true : false;
}
Любые идеи о том, что может произойти неправильно?
Не нужно включать текстовый вывод в качестве изображений. Просто скопируйте его в свой пост и отформатируйте как «код»; вставьте '' на отдельной строке перед тем, чтобы игнорировать подсветку синтаксиса. – usr2564301