PDA

Просмотр полной версии : [Вопрос] краш запроса (MySQL)



Unreal
15.10.2015, 18:14
Привет всем, поставил проект на хостинг (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.
Следовательно, есть смысл обратиться в техподдержку хостинга.

wAx
15.10.2015, 19:48
покажи запрос после которого вызывается OnPlayerRegister

Unreal
15.10.2015, 21:28
покажи запрос после которого вызывается 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);
}

wAx
15.10.2015, 21:59
я просил запрос ПОСЛЕ которого вызывается OnPlayerRegister

Unreal
15.10.2015, 22:10
я просил запрос ПОСЛЕ которого вызывается OnPlayerRegister

ау, прошу прощение

format(string, sizeof(string),"SELECT `Name` FROM `users` WHERE `Name`='%s'", PN(playerid));
return mysql_function_query(database, string, true, "OnPlayerRegister","i", playerid);

но раньше такого не было

Unreal
16.10.2015, 19:19
я просил запрос ПОСЛЕ которого вызывается OnPlayerRegister

так я кинул что вы просили, можете ответить ?

Desulaid
16.10.2015, 19:34
Можете поделиться со мной OnPlayerModeInit и OnGameModeExit?

wAx
16.10.2015, 19:53
так я кинул что вы просили, можете ответить ?

потыкал я похожие случаи в интернете (думаю что и ты делал подобное), все сходятся во мнении что с бд какие-то неполадки. Если в бд ругается только лишь на этот колбэк, то попробуй изменить структуру запроса. SELECT * FROM, вместо SELECT `Name`...

Unreal
16.10.2015, 20:14
потыкал я похожие случаи в интернете (думаю что и ты делал подобное), все сходятся во мнении что с бд какие-то неполадки. Если в бд ругается только лишь на этот колбэк, то попробуй изменить структуру запроса. SELECT * FROM, вместо SELECT `Name`...

помоему лучше будет не избегать проблем, а решать. Но я помню что не только у запросов типа SELECT, но и у UPDATE'ов была такая проблема

$continue$
16.10.2015, 20:46
Скинь OnGameModeInit

Unreal
16.10.2015, 21:24
Скинь 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);
}

И потом логи в студию (Вызвать краш нужно)

Unreal
16.10.2015, 21:52
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, "", "");

Unreal
16.10.2015, 22:12
Другая проблема - новая тема.
Ну так и быть помогу тут:
После подключение к серверу хоста средствами 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!

Unreal
17.10.2015, 15:31
Version include and plugin in studio!

r39-3

Unreal
17.10.2015, 16:23
Ну раз дружите с английским, то вам должно быть очевидно, что, скорее всего, дело не в вашем коде, а в стабильности работы сервера MySQL.
Следовательно, есть смысл обратиться в техподдержку хостинга.

но многие считают что это из-за запросов

$continue$
17.10.2015, 16:29
Покажите mysql_connect

Unreal
17.10.2015, 16:54
Покажите mysql_connect

в верхнем посту было

database = mysql_connect(host, user, db, pass);

если нужно то

SetServerSetting("localhost","root","unreal_db","");

$continue$
17.10.2015, 16:57
Ну дак посмотрите что вернет mysql_connect

Unreal
17.10.2015, 17:10
Ну дак посмотрите что вернет mysql_connect

я не понимаю, зачем это делать? на локалке если все нормально, а на хостинге нет. лучше закройте тему, ответ не найден

$continue$
17.10.2015, 17:10
Я думал так лучше будет:


static const
success_info[2][] =
{
!"Ошибка подключения к базе данных!",
!"Успешно подключено к базе данных!"
};

print(success_info[!!mysql_errno()]);

Просто оставлю это тут.

Unreal
17.10.2015, 17:55
Просто оставлю это тут.

а разница между?

if(mysql_errno(database) != 0) print("[Ошибка]: Не удалось соединиться с сервером базы данных!");

- - - Добавлено - - -

вобщем не важно, я поставил

mysql_set_charset("utf8");

и теперь все норм, и крашов нету вроде, спасибо.

Unreal
17.10.2015, 20:27
и вновь обломись :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')

Unreal
17.10.2015, 21:48
разобрался.

SET wait_timeout=28800

SET @@global.net_read_timeout=360;