Просмотр полной версии : [Вопрос] краш запроса (MySQL)
Привет всем, поставил проект на хостинг (Mysql)
и частенько появляется такая ошибка:
[22:12:02] [ERROR] CMySQLQuery::Execute[OnPlayerRegister] - (error #2013) Lost connection to MySQL server during query
[12:11:22] [ERROR] CMySQLQuery::Execute[] - (error #2013) Lost connection to MySQL server during query
[19:12:00] [ERROR] CMySQLQuery::Execute[OnPlayerRegister] - (error #2013) Lost connection to MySQL server during query
почему так? и как исправить?
P.S: я дружу с англ. и не надо мне перевода, если вы знаете ответ, прошу ответить: "как исправить?"
Daniel_Cortez
15.10.2015, 18:41
Привет всем, поставил проект на хостинг (Mysql)
и частенько появляется такая ошибка:
[22:12:02] [ERROR] CMySQLQuery::Execute[OnPlayerRegister] - (error #2013) Lost connection to MySQL server during query
[12:11:22] [ERROR] CMySQLQuery::Execute[] - (error #2013) Lost connection to MySQL server during query
[19:12:00] [ERROR] CMySQLQuery::Execute[OnPlayerRegister] - (error #2013) Lost connection to MySQL server during query
почему так? и как исправить?
P.S: я дружу с англ. и не надо мне перевода, если вы знаете ответ, прошу ответить: "как исправить?"
Ну раз дружите с английским, то вам должно быть очевидно, что, скорее всего, дело не в вашем коде, а в стабильности работы сервера MySQL.
Следовательно, есть смысл обратиться в техподдержку хостинга.
покажи запрос после которого вызывается OnPlayerRegister
покажи запрос после которого вызывается OnPlayerRegister
вы думаете это только у одного запроса? ведь не только у него помоему... все же вот
public OnPlayerRegister(playerid)
{
new rows, fields;
cache_get_data(rows, fields);
if(!rows) return ShowAccessDialog(playerid,2,0);
new string[MAX_PLAYER_NAME+98];
format(string,sizeof(string),"SELECT `unban_date`,`reason` FROM `banlog` WHERE `player`='%s' AND `unban_date` > NOW() LIMIT 1",PN(playerid));
return mysql_function_query(database,string,true,"CheckPlayerBanned","i",playerid);
}
я просил запрос ПОСЛЕ которого вызывается OnPlayerRegister
я просил запрос ПОСЛЕ которого вызывается OnPlayerRegister
ау, прошу прощение
format(string, sizeof(string),"SELECT `Name` FROM `users` WHERE `Name`='%s'", PN(playerid));
return mysql_function_query(database, string, true, "OnPlayerRegister","i", playerid);
но раньше такого не было
я просил запрос ПОСЛЕ которого вызывается OnPlayerRegister
так я кинул что вы просили, можете ответить ?
Desulaid
16.10.2015, 19:34
Можете поделиться со мной OnPlayerModeInit и OnGameModeExit?
так я кинул что вы просили, можете ответить ?
потыкал я похожие случаи в интернете (думаю что и ты делал подобное), все сходятся во мнении что с бд какие-то неполадки. Если в бд ругается только лишь на этот колбэк, то попробуй изменить структуру запроса. SELECT * FROM, вместо SELECT `Name`...
потыкал я похожие случаи в интернете (думаю что и ты делал подобное), все сходятся во мнении что с бд какие-то неполадки. Если в бд ругается только лишь на этот колбэк, то попробуй изменить структуру запроса. SELECT * FROM, вместо SELECT `Name`...
помоему лучше будет не избегать проблем, а решать. Но я помню что не только у запросов типа SELECT, но и у UPDATE'ов была такая проблема
$continue$
16.10.2015, 20:46
Скинь OnGameModeInit
Скинь OnGameModeInit
public OnGameModeExit()
{
for(new i=0; i<MAX_PLAYERS; i++) format(ExitInfo[i][ExitName],5,"None"),ExitInfo[i][ExitTime] = 0;
mysql_function_query(database,"UPDATE `users` SET `onstatus`='0'", false, "", "");
mysql_function_query(database,"DELETE FROM `banlog` WHERE `unban_date` < NOW()",false,"","");
mysql_function_query(database,"DELETE FROM `users` WHERE `pTut`='0'",false,"","");
SaveServer();
mysql_close(database);
}
stock SetServerSetting(host[], user[], db[], pass[])
{
//================ MySQL ========================
//printf("host: %s user - %s database - %s pass: %s",host, user, db, pass);
database = mysql_connect(host, user, db, pass);
if(mysql_errno(database) != 0) SendRconCommand("password ola77b"),print("[Ошибка]: Не удалось соединиться с сервером базы данных!");
//mysql_function_query(database,"SET NAMES cp1251",false,"","");
mysql_function_query(database,"SET NAMES cp1251",false,"","");
//================ Query ========================
mysql_function_query(database,"DELETE FROM `logs` WHERE DATEDIFF(NOW(), `date`) > '7'",false,"","");
mysql_function_query(database,"UPDATE `users` SET `onstatus`='0'", false, "", "");
mysql_function_query(database,"DELETE FROM `banlog` WHERE `unban_date` < NOW()",false,"","");
mysql_function_query(database,"SELECT * FROM `fraction`",false,"LoadFractions","");
mysql_function_query(database,"SELECT * FROM `pickups`", true, "LoadTP","");
mysql_function_query(database,"SELECT * FROM `fstats`", true, "LoadRepa","");
mysql_function_query(database,"SELECT * FROM `houses`", true, "LoadHouses","");
mysql_function_query(database,"SELECT * FROM `ferm`", true, "LoadFerm","");
mysql_function_query(database,"SELECT * FROM `kazino`", true, "LoadKazino","");
mysql_function_query(database,"SELECT * FROM `bizz`", true, "LoadBizz","");
mysql_function_query(database,"SELECT * FROM `sbizz`", true, "LoadSBizz","");
mysql_function_query(database,"SELECT * FROM `mbizz`", true, "LoadMBizz","");
mysql_function_query(database,"SELECT * FROM `avtomas`", true, "LoadAvto","");
mysql_function_query(database,"SELECT * FROM `gangzones`", true, "LoadGangZones","");
mysql_function_query(database,"SELECT * FROM `other`", true, "LoadOther","");
mysql_function_query(database,"SELECT * FROM `cars`", true, "LoadBuyableCars","");
mysql_function_query(database,"SELECT * FROM `fracveh`", true, "LoadFracCars","");
return true;
}
$continue$
16.10.2015, 21:31
public OnGameModeExit()
{
for (new i = 0; i<MAX_PLAYERS; i++) format(ExitInfo[i][ExitName], 5, "None"), ExitInfo[i][ExitTime] = 0;
mysql_log(LOG_ALL);
mysql_function_query(database, "UPDATE `users` SET `onstatus`='0'", false, "", "");
mysql_function_query(database, "DELETE FROM `banlog` WHERE `unban_date` < NOW()", false, "", "");
mysql_function_query(database, "DELETE FROM `users` WHERE `pTut`='0'", false, "", "");
SaveServer();
mysql_close(database);
}
И потом логи в студию (Вызвать краш нужно)
public OnGameModeExit()
{
for (new i = 0; i<MAX_PLAYERS; i++) format(ExitInfo[i][ExitName], 5, "None"), ExitInfo[i][ExitTime] = 0;
mysql_log(LOG_ALL);
mysql_function_query(database, "UPDATE `users` SET `onstatus`='0'", false, "", "");
mysql_function_query(database, "DELETE FROM `banlog` WHERE `unban_date` < NOW()", false, "", "");
mysql_function_query(database, "DELETE FROM `users` WHERE `pTut`='0'", false, "", "");
SaveServer();
mysql_close(database);
}
И потом логи в студию (Вызвать краш нужно)
краша больше не заметно, может это потому что я обновил пару плагинов, но теперь у меня проблема с кодировкой
И это не при загрузке текста, а при сохранение, потому что название не меняется в запросе UPDATE.
кодировка баз utf8, а при старте я даю запрос
SET NAMES cp1251
http://img.uz/d/2015/10/56213925b4746.png
$continue$
16.10.2015, 21:59
Другая проблема - новая тема.
Ну так и быть помогу тут:
После подключение к серверу хоста средствами mysql (mysql_connect) вставьте следующие:
mysql_set_charset("utf8_bin");
mysql_function_query(handle, "SET NAMES 'utf8'", false, "", "");
mysql_function_query(handle, "SET CHARACTER SET 'cp1251'", false, "", "");
Другая проблема - новая тема.
Ну так и быть помогу тут:
После подключение к серверу хоста средствами mysql (mysql_connect) вставьте следующие:
mysql_set_charset("utf8_bin");
mysql_function_query(handle, "SET NAMES 'utf8'", false, "", "");
mysql_function_query(handle, "SET CHARACTER SET 'cp1251'", false, "", "");
к сожалению вновь тот краш
из server_log.txt:
[23:08:02] * [MySQL]: Lost connection to MySQL server during query
[23:08:02] * [Query]: SELECT `Name` FROM `users` WHERE `Name`='Scooter_Brown'
из mysql_log.txt:
[23:08:02] [ERROR] CMySQLQuery::Execute[OnPlayerRegister] - (error #2013) Lost connection to MySQL server during query
а насчет кодироки:
[23:08:02] [ERROR] CMySQLQuery::Execute[OnPlayerRegister] - (error #2013) Lost connection to MySQL server during query
все еще ?????? вместо русских букв уже, и так же при загрузке
Запрос загрузки лидеров:
cache_get_field_content(i,"fLeader",FracInfo[i][fLeader],database,MAX_PLAYER_NAME);
$continue$
16.10.2015, 22:59
Version include and plugin in studio!
Version include and plugin in studio!
r39-3
Ну раз дружите с английским, то вам должно быть очевидно, что, скорее всего, дело не в вашем коде, а в стабильности работы сервера MySQL.
Следовательно, есть смысл обратиться в техподдержку хостинга.
но многие считают что это из-за запросов
$continue$
17.10.2015, 16:29
Покажите mysql_connect
Покажите mysql_connect
в верхнем посту было
database = mysql_connect(host, user, db, pass);
если нужно то
SetServerSetting("localhost","root","unreal_db","");
$continue$
17.10.2015, 16:57
Ну дак посмотрите что вернет mysql_connect
Ну дак посмотрите что вернет mysql_connect
я не понимаю, зачем это делать? на локалке если все нормально, а на хостинге нет. лучше закройте тему, ответ не найден
$continue$
17.10.2015, 17:10
Я думал так лучше будет:
static const
success_info[2][] =
{
!"Ошибка подключения к базе данных!",
!"Успешно подключено к базе данных!"
};
print(success_info[!!mysql_errno()]);
Просто оставлю это тут.
Просто оставлю это тут.
а разница между?
if(mysql_errno(database) != 0) print("[Ошибка]: Не удалось соединиться с сервером базы данных!");
- - - Добавлено - - -
вобщем не важно, я поставил
mysql_set_charset("utf8");
и теперь все норм, и крашов нету вроде, спасибо.
и вновь обломись :C
[21:19:26] * [MySQL]: Lost connection to MySQL server during query
[21:19:26] * [Query]: UPDATE `users` SET `pRank`='10' WHERE `Name`='Ment_Muller' LIMIT 1
[21:22:00] * [MySQL]: Lost connection to MySQL server during query
[21:22:00] * [Query]: INSERT INTO `logs` (`date`,`log`,`admin`,`player`) VALUES (NOW(),'Администратор Scooter_Brown выдал бан-чата Oybek_Rustamov на 2 минут(ы). Причина: оффтоп','Scooter_Brown','Oybek_Rustamov')
разобрался.
SET wait_timeout=28800
SET @@global.net_read_timeout=360;
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot