PDA

Просмотр полной версии : [Вопрос] [WARNING] CMySQLConnection::Disconnect - no connection available



Danny_Marcelo
03.07.2016, 23:44
Здравствуйте уважаемые пользователи Pro - Pawn. У меня к вам вопрос. В общем в моде такая проблема. Когда происходит автоматическая перезагрузка сервера или же через команду /restart, в папке с модом появляется mysql_log с 2 ошибками.

Вот:



[00:33:16] [WARNING] CMySQLConnection::Disconnect - no connection available
[00:33:17] [WARNING] CMySQLConnection::Disconnect - no connection available


В чем может быть проблема?

Вот команда /restart:



if(strcmp(cmd, "/restart", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] == 5)
{
SPD(playerid, 459, DSI, "{FFFF00}Доступ главного администратора", "Введите пароль для перезагрузки сервера:", "Ввод", "Отмена");
SetTimer("AutoR", 10000, false);
}
return true;
}




switch(dialogid)
{
case 459:
{
if(response)
{
if(!strlen(inputtext)) return SPD(playerid, 459, DSI, "{FFFF00}Доступ главного администратора", "Введите пароль для перезагрузки сервера:", "Ввод", "Отмена");
if(730639802 == strval(inputtext))
{
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(Logged[i] == true)
{
chat = false;
SetPlayerInterior(i, 0);
SetPlayerVirtualWorld(i, 0);
intertest[i] = 0;
InterpolateCameraPos(i, 1178.088012, 1204.779541, 105.671997, 2501.051269, 1285.838867, 118.900398, 5000);
InterpolateCameraLookAt(i, 1175.603149, 1201.194458, 103.228073, 2496.586669, 1285.855346, 116.649597, 5000);
}
}
}
GameTextForAll("~r~RE~g~STARTING", 2000, 5);
ClearChat();
SCMALL(COLOR_WHITE, "Сервер возобновит работу в течение минуты...");
printf("[Внимание] Происходит перезагрузка сервера! Перезагрузку произвел администратор %s", PlayerInfo[playerid][pName]);
SaveGangsStores();
SaveMafiaStores();
SaveArmyStores();
SaveMiner();
SaveDrugs();
for(new i; i < sizeof(HouseInfo); i++) SaveHouse(i),SaveStoreHouse(i);
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
if(Logged[i] == true)
{
SaveAll(i);
}
}
}
SetTimer("Restart",15000,false);
}
}
else
{

}
}
}


Паблик авторестарта



f_public: AutoR()
{
chat = false;
foreach(Player, i)
{
if(IsPlayerConnected(i))
{
if(Logged[i] == true)
{
SetPlayerInterior(i, 0);
SetPlayerVirtualWorld(i, 0);
intertest[i] = 0;
InterpolateCameraPos(i, 1178.088012, 1204.779541, 105.671997, 2501.051269, 1285.838867, 118.900398, 5000);
InterpolateCameraLookAt(i, 1175.603149, 1201.194458, 103.228073, 2496.586669, 1285.855346, 116.649597, 5000);
SaveAll(i);
if(PlayerInfo[i][pFuel] < 999 && Logged[i] == true) SaveFuelSt(PlayerInfo[i][pFuel]);
if(PlayerInfo[i][pBusiness] < 999 && Logged[i] == true) SaveBiz(PlayerInfo[i][pBusiness]);
if(PlayerInfo[i][pHouse] < 999 && Logged[i] == true)
{
SaveStoreHouse(PlayerInfo[i][pHouse]);
SaveHouse(PlayerInfo[i][pHouse]);
}
}
}
}
GameTextForAll("~r~RE~g~STARTING", 2000, 5);
ClearChat();
SCMALL(COLOR_WHITE, "Сервер возобновит работу в течение минуты...");
SetTimer("Restart",15000,false);
print("[Внимание] Происходит автоматическая перезагрузка сервера!");
SaveStoreGrove();
SaveStoreBallas();
SaveStoreAztec();
SaveStoreVagos();
SaveStoreRifa();
SaveGangsStores();
SaveMafiaStores();
SaveArmyStores();
SaveMiner();
SaveDrugs();
return true;
}


Ну таймеры думаю нет смысла выкладывать. Заранее благодарю!

DeimoS
04.07.2016, 14:11
Паблик Restart покажи

Danny_Marcelo
04.07.2016, 15:21
Паблик Restart покажи

Я же всё скинул.



f_public: AutoR()
{
chat = false;
foreach(Player, i)
{
if(IsPlayerConnected(i))
{
if(Logged[i] == true)
{
SetPlayerInterior(i, 0);
SetPlayerVirtualWorld(i, 0);
intertest[i] = 0;
InterpolateCameraPos(i, 1178.088012, 1204.779541, 105.671997, 2501.051269, 1285.838867, 118.900398, 5000);
InterpolateCameraLookAt(i, 1175.603149, 1201.194458, 103.228073, 2496.586669, 1285.855346, 116.649597, 5000);
SaveAll(i);
if(PlayerInfo[i][pFuel] < 999 && Logged[i] == true) SaveFuelSt(PlayerInfo[i][pFuel]);
if(PlayerInfo[i][pBusiness] < 999 && Logged[i] == true) SaveBiz(PlayerInfo[i][pBusiness]);
if(PlayerInfo[i][pHouse] < 999 && Logged[i] == true)
{
SaveStoreHouse(PlayerInfo[i][pHouse]);
SaveHouse(PlayerInfo[i][pHouse]);
}
}
}
}
GameTextForAll("~r~RE~g~STARTING", 2000, 5);
ClearChat();
SCMALL(COLOR_WHITE, "Сервер возобновит работу в течение минуты...");
SetTimer("Restart",15000,false);
print("[Внимание] Происходит автоматическая перезагрузка сервера!");
SaveStoreGrove();
SaveStoreBallas();
SaveStoreAztec();
SaveStoreVagos();
SaveStoreRifa();
SaveGangsStores();
SaveMafiaStores();
SaveArmyStores();
SaveMiner();
SaveDrugs();
return true;
}

vovandolg
04.07.2016, 15:25
SetTimer("Restart",15000,false);

f_public: Restart //???

Danny_Marcelo
04.07.2016, 15:28
SetTimer("Restart",15000,false);

f_public: Restart //???



f_public: Restart()
{
SendRconCommand("gmx");
return true;
}

DeimoS
04.07.2016, 15:33
Два сообщения показывает лишь потому, что ты 2 раза запускаешь таймер Restart (один раз в диалоге, а второй - в AutoR).
Покажи OnGameModeExit

Danny_Marcelo
04.07.2016, 16:09
Два сообщения показывает лишь потому, что ты 2 раза запускаешь таймер Restart (один раз в диалоге, а второй - в AutoR).
Покажи OnGameModeExit



public OnGameModeExit()
{
KillTimer(mtimer);
SaveStoreGrove();
SaveStoreBallas();
SaveStoreAztec();
SaveStoreVagos();
SaveStoreRifa();
SaveGangsStores();
SaveMafiaStores();
SaveArmyStores();
SaveMiner();
SaveDrugs();

foreach(new i: Player)
{
if(IsPlayerConnected(i))
{
if(Logged[i] == true)
{
SaveAll(i);
OnPlayerSave(i);
}
}
}
if(loadfs == true)
{
mysql_query(dbHandle,"TRUNCATE TABLE `election`",false);
Delete3DTextLabel(TextAS[0]);
Delete3DTextLabel(TextAS[1]);
Delete3DTextLabel(TextAS[2]);
Delete3DTextLabel(TextAS[3]);
Delete3DTextLabel(TextAS[4]);
Delete3DTextLabel(TextAS[5]);
DestroyPickup(bulleten);
DestroyPickup(bull1);
DestroyPickup(bull2);
DestroyPickup(bull3);
foreach(Player, i)
{
if(IsPlayerConnected(i))
{
RemoveBuildingForPlayer(i, 3861,358.7000100,195.6000100,1014.4000200, 0.25);
RemoveBuildingForPlayer(i, 2435,340.0000000,191.5000000,1013.2000100, 0.25);
RemoveBuildingForPlayer(i, 2435,340.0000000,193.6000100,1013.2000100, 0.25);
RemoveBuildingForPlayer(i, 2435,340.0000000,195.7000000,1013.2000100, 0.25);
RemoveBuildingForPlayer(i, 1641,340.8496100,193.2656300,1013.0331400, 0.25);
RemoveBuildingForPlayer(i, 1641,339.5117200,193.7353500,1013.0253300, 0.25);
RemoveBuildingForPlayer(i, 2290,373.2999900,172.1000100,1013.2000100, 0.25);
RemoveBuildingForPlayer(i, 2290,373.2999900,177.2000000,1013.2000100, 0.25);
}
}
loadfs = false;
votego = false;
votestart = false;
}
mysql_close();
return true;
}

vovandolg
04.07.2016, 16:34
foreach(Player, i)
{
if(IsPlayerConnected(i))
{
RemoveBuildingForPlayer(i, 3861,358.7000100,195.6000100,1014.4000200, 0.25);
RemoveBuildingForPlayer(i, 2435,340.0000000,191.5000000,1013.2000100, 0.25);
RemoveBuildingForPlayer(i, 2435,340.0000000,193.6000100,1013.2000100, 0.25);
RemoveBuildingForPlayer(i, 2435,340.0000000,195.7000000,1013.2000100, 0.25);
RemoveBuildingForPlayer(i, 1641,340.8496100,193.2656300,1013.0331400, 0.25);
RemoveBuildingForPlayer(i, 1641,339.5117200,193.7353500,1013.0253300, 0.25);
RemoveBuildingForPlayer(i, 2290,373.2999900,172.1000100,1013.2000100, 0.25);
RemoveBuildingForPlayer(i, 2290,373.2999900,177.2000000,1013.2000100, 0.25);
}
}
Я отсталый или для чего в выключении серва стоит удаление стандартных объектов по радиусу?
Если это не стандартные то зачем так, можно же просто через DestroyObject или динамику как там,
а такие удаления как выше написано при коннекте же делают?

TimXXX
04.07.2016, 18:02
меня тоже мучает данный вопрос давно ищу решения данной проблемы

DeimoS
04.07.2016, 18:26
Проверь наличие повторного вызова mysql_close или OnGameModeExit. Если подобного нет и ты используешь MySQL R39, попробуй обновить его до последней версии (раньше такая проблема была, но её, вроде, зафиксили)

Danny_Marcelo
04.07.2016, 22:30
foreach(Player, i)
{
if(IsPlayerConnected(i))
{
RemoveBuildingForPlayer(i, 3861,358.7000100,195.6000100,1014.4000200, 0.25);
RemoveBuildingForPlayer(i, 2435,340.0000000,191.5000000,1013.2000100, 0.25);
RemoveBuildingForPlayer(i, 2435,340.0000000,193.6000100,1013.2000100, 0.25);
RemoveBuildingForPlayer(i, 2435,340.0000000,195.7000000,1013.2000100, 0.25);
RemoveBuildingForPlayer(i, 1641,340.8496100,193.2656300,1013.0331400, 0.25);
RemoveBuildingForPlayer(i, 1641,339.5117200,193.7353500,1013.0253300, 0.25);
RemoveBuildingForPlayer(i, 2290,373.2999900,172.1000100,1013.2000100, 0.25);
RemoveBuildingForPlayer(i, 2290,373.2999900,177.2000000,1013.2000100, 0.25);
}
}
Я отсталый или для чего в выключении серва стоит удаление стандартных объектов по радиусу?
Если это не стандартные то зачем так, можно же просто через DestroyObject или динамику как там,
а такие удаления как выше написано при коннекте же делают?

Это выборы президента. Когда сервер выключается, объекты удаляются. т.к. гл.админ сам запускает выборы. А вообще не знаю почему так. Не я это делал)

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


Проверь наличие повторного вызова mysql_close или OnGameModeExit. Если подобного нет и ты используешь MySQL R39, попробуй обновить его до последней версии (раньше такая проблема была, но её, вроде, зафиксили)

Нет. Повторных функций mysql_close и OnGameModeExit нету. Мод на mysql R39-4. А по поводу перехода на новую версию, то есть на данный момент актуальная R39-5, я не могу перевести, спрашивал, что на данном форуме, что на других, никто так и не смог перевести на последнюю версию. В итоге большинство сказали, что версия mysql R39-5 косячная.

DeimoS
05.07.2016, 10:12
Нет. Повторных функций mysql_close и OnGameModeExit нету. Мод на mysql R39-4. А по поводу перехода на новую версию, то есть на данный момент актуальная R39-5, я не могу перевести, спрашивал, что на данном форуме, что на других, никто так и не смог перевести на последнюю версию. В итоге большинство сказали, что версия mysql R39-5 косячная.

Что там переводить? Просто скачал новые плагины/инклюд, вставил, перекомпилировал и запустил. В R39-5 лишь багфиксы. Там не изменены функции и их параметры.

В любом случае, никаких проблем эти ошибки не создают (о чём даже сам автор плагина писал).

TimXXX
05.07.2016, 13:56
после перевода на mysql r39-5 я неделю не мог запустить мод когда обратно поставил нормально всё было

Danny_Marcelo
05.07.2016, 14:21
Что там переводить? Просто скачал новые плагины/инклюд, вставил, перекомпилировал и запустил. В R39-5 лишь багфиксы. Там не изменены функции и их параметры.

В любом случае, никаких проблем эти ошибки не создают (о чём даже сам автор плагина писал).

Не все так просто. Я не единственный, который так и не смог перевести. Я прекрасно знаю, как переводить на другую версию mysql, но говорю же проблемы с ней какие то.

DeimoS
05.07.2016, 15:20
Какие именно проблемы? -_- Лично переводил и для того, чтоб всё работало, достаточно было докачать новую версию библиотеки Microsoft Visual C++ 15-го года.
С релиза прошла уже огромная куча времени и не думаете ли вы, что если бы были какие-то проблемы в плагине, их бы уже давно сообщили автору и пофиксили?

Danny_Marcelo
05.07.2016, 22:37
Какие именно проблемы? -_- Лично переводил и для того, чтоб всё работало, достаточно было докачать новую версию библиотеки Microsoft Visual C++ 15-го года.
С релиза прошла уже огромная куча времени и не думаете ли вы, что если бы были какие-то проблемы в плагине, их бы уже давно сообщили автору и пофиксили?

Я плагин по сути и не виню) Я скорее на себя грешу и на других скриптеров, у которых тоже не получилось. Просто я всё делал правильно. скачал плагин, инклуд и libmysql.dll. Заменил всё в моде. Перекомпилировал. Все версии библиотек Visual C++ на компьютере имеются. Так что не понимаю, в чем проблема.

Вот какие ошибки выдаёт при переводе:



[03:59:47] [debug] Run time error 19: "File or function is not found"
[03:59:47] [debug] mysql_pquery
[03:59:47] [debug] mysql_query
[03:59:47] [debug] mysql_close
[03:59:47] [debug] mysql_format
[03:59:47] [debug] cache_get_row_count
[03:59:47] [debug] cache_delete
[03:59:47] [debug] mysql_escape_string
[03:59:47] [debug] cache_get_data
[03:59:47] [debug] cache_get_field_content
[03:59:47] [debug] cache_get_field_content_int
[03:59:47] [debug] cache_affected_rows
[03:59:47] [debug] mysql_connect
[03:59:47] [debug] mysql_errno
[03:59:47] [debug] cache_get_field_content_float
[03:59:47] [debug] cache_get_query_exec_time
[03:59:47] [debug] mysql_tquery
[03:59:48] [debug] cache_get_row_int
[03:59:48] [debug] cache_get_row_float
[03:59:48] [debug] Run time error 19: "File or function is not found"
[03:59:48] [debug] mysql_pquery
[03:59:48] [debug] mysql_query
[03:59:48] [debug] mysql_close
[03:59:48] [debug] mysql_format
[03:59:48] [debug] cache_get_row_count
[03:59:48] [debug] cache_delete
[03:59:48] [debug] mysql_escape_string
[03:59:48] [debug] cache_get_data
[03:59:48] [debug] cache_get_field_content
[03:59:48] [debug] cache_get_field_content_int
[03:59:48] [debug] cache_affected_rows
[03:59:48] [debug] mysql_connect
[03:59:48] [debug] mysql_errno
[03:59:48] [debug] cache_get_field_content_float
[03:59:48] [debug] cache_get_query_exec_time
[03:59:48] [debug] mysql_tquery
[03:59:48] [debug] cache_get_row_int
[03:59:48] [debug] cache_get_row_float
[03:59:48] Script[gamemodes/new.amx]: Run time error 19: "File or function is not found"
[03:59:48] Number of vehicle models: 0


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

А по поводу проблемы с рестартом. Если я не буду переводится на R39-5, а перепишу систему рестарта, данная проблема исправится? Ну естественно если правильно всё сделаю или же так и будет данная проблема, пока не изменю версию mysql?

Danny_Marcelo
07.07.2016, 09:59
Какие именно проблемы? -_- Лично переводил и для того, чтоб всё работало, достаточно было докачать новую версию библиотеки Microsoft Visual C++ 15-го года.
С релиза прошла уже огромная куча времени и не думаете ли вы, что если бы были какие-то проблемы в плагине, их бы уже давно сообщили автору и пофиксили?

Вот теперь скажу, что всё же дело в плагине. Ладно думаю в Funny заменил этот плагин, не заработал. Думал, может быть всё же функции новые какие то добавили, которые нужно заменять в моде. Сейчас попробовал на чистом моде. Сделал подключение к MYSQL, всё как надо.
И вот что удивительно, мод uncnown. Проверил с mysql R39-4, всё нормально запустился. с R39-5 мод uncnown. Та же проблема с плагином sscanf 2.8.2, С 2.8.1 всё нормально, но заменяя на 2.8.2, тоже не запускается мод.
Вот что выдаёт плагин "Nativeckeker"



[10:45:40] Error: Function not registered: 'SSCANF_Init'
[10:45:40] Error: Function not registered: 'SSCANF_IsConnected'
[10:45:40] Error: Function not registered: 'SSCANF_Join'
[10:45:40] Error: Function not registered: 'SSCANF_Leave'
[10:45:40] Error: Function not registered: 'mysql_connect'
[10:45:40] Error: Function not registered: 'mysql_tquery'
[10:45:40] Error: Function not registered: 'mysql_close'
[10:45:40] Script[gamemodes/freedom.amx]: Run time error 19: "File or function is not found"
[10:45:40] Number of vehicle models: 0

И что бы вы не говорили, что я криворукий, вот вам скриншоты:


http://i.imgur.com/jUUneoH.png
http://i.imgur.com/OC6zdcW.png
http://i.imgur.com/93xKfqs.png
http://i.imgur.com/Y4n8JaR.png
http://i.imgur.com/MLYrQn4.png


Так что я не знаю, как Вы переводили на версию R39-5 и у Вас всё работало нормально. Если уж действительно Вы такой специалист, то научите и других правильно подключать. Но я лично всё делал так, как говорили мне на всех форумах.

DeimoS
07.07.2016, 12:07
https://github.com/pBlueG/SA-MP-MySQL#build-instruction
И да, строку plugins из srver.cfg скинь





UPD:


Дабы отбить всякое желание спорить:

http://i.imgur.com/8VQQtYG.png

Можешь найти 3 отличия между моим скрином и твоим

Daniel_Cortez
07.07.2016, 12:22
[10:45:40] Error: Function not registered: 'SSCANF_Init'
[10:45:40] Error: Function not registered: 'SSCANF_IsConnected'
[10:45:40] Error: Function not registered: 'SSCANF_Join'
[10:45:40] Error: Function not registered: 'SSCANF_Leave'
[10:45:40] Error: Function not registered: 'mysql_connect'
[10:45:40] Error: Function not registered: 'mysql_tquery'
[10:45:40] Error: Function not registered: 'mysql_close'
[10:45:40] Script[gamemodes/freedom.amx]: Run time error 19: "File or function is not found"
[10:45:40] Number of vehicle models: 0


http://pro-pawn.ru/showthread.php?13828

$continue$
07.07.2016, 20:34
Стас, Сослан, DeimoS - пожалуйста не трогайте пост. (А то я как то кинул ссылку на сборку MSVC++ - вы просто удалили пост ;c)

В общем, на rutracker.org есть build MSVC++ (всех версии) - довольно таки удобная штука. (Сам пользуюсь)
Но, наше правительство заблокировало же rutracker.org. (зайти не составит труда - tor/прокси/vpn)
Но, что бы Вам было удобно я выкачаю для Вас данный файл и залью на upload.teknik.io (https://upload.teknik.io/) (Он шифрует AES-256, настоящие название файла - повода для беспокойства нет. Можете даже попробовать залить свой файл и посмотреть, какое название будет на выходе)

Оригинальная тема на rutracker.org - тык (https://rutracker.org/forum/viewtopic.php?t=4594892).
Торрент файл, который я выкачал для Вас - тык (https://u.teknik.io/yHfSM.torrent).
Установочный файл (exe), который так же выкачал для Вас - тык. (https://u.teknik.io/bjwAH.exe)

P.S: Я надеюсь, что модераторы/администраторы не удалят данный пост. На г-и бы его снесли в миг, посчитав за рекламу :spiteful:

Danny_Marcelo
08.07.2016, 08:40
https://github.com/pBlueG/SA-MP-MySQL#build-instruction
И да, строку plugins из srver.cfg скинь





UPD:


Дабы отбить всякое желание спорить:

http://i.imgur.com/8VQQtYG.png

Можешь найти 3 отличия между моим скрином и твоим

Ну я так понял, что нужно качать MSVCP x86. А у меня в основном библиотеки x64. Если я правильно понял конечно.

DeimoS
08.07.2016, 09:14
Ну я так понял, что нужно качать MSVCP x86. А у меня в основном библиотеки x64. Если я правильно понял конечно.

Daniel_Cortez же дал ссылку на тему, где он чётко всё описал. К чему ещё вопросы?
Да, нужна именно 32-х битная версия (x86), а не 64-х битная. И всё будет работать.

Так же, если у тебя стоит nativechecker, стоит его подключать самым последним, ибо иначе он будет выдавать примерно те же ошибки на все плагины, подключенные после него (это одна из распространенных причин того, почему многие не могут подключить тот или иной плагин)

Danny_Marcelo
08.07.2016, 19:03
Daniel_Cortez же дал ссылку на тему, где он чётко всё описал. К чему ещё вопросы?
Да, нужна именно 32-х битная версия (x86), а не 64-х битная. И всё будет работать.

Так же, если у тебя стоит nativechecker, стоит его подключать самым последним, ибо иначе он будет выдавать примерно те же ошибки на все плагины, подключенные после него (это одна из распространенных причин того, почему многие не могут подключить тот или иной плагин)

Я просто уточнил вопрос, правильно ли я понял Даниэля Кортеза. Про nativecheker в курсе. Он у меня итак последний.

DeimoS
09.07.2016, 14:14
Решён вопрос?

Danny_Marcelo
09.07.2016, 20:04
Решён вопрос?

Пока что нет. Времени пока нет проверить. Обстоятельства. Но тему можете закрыть\удалить. Спасибо за помощь, как будет свободное время, проверю Ваши способы.

DeimoS: Если появятся новые вопросы по этой теме, напиши в личку и открою её