Pisze własny plugin, wszystko idzie nawet dobrze ale mam mały problem. Plugin wypluwa mi w logach taki oto błąd po zmianie mapy i nie jest połączony z bazą danych:
Error on Table query: 4<
Podczas pierwszego uruchomienia serwera z pluginem wypluł błąd:
L 03/09/2011 - 16:38:21: Error on Table query: L 03/09/2011 - 16:38:21: Could not connect to SQL database.
Podczas pierwszego połączenia z bazą, baza danych była pusta. Plugin wysyła poprawne zapytanie i tworzy tabele.
Oto okrojony fragment pluginu:
public plugin_init() { [...] sql_start(); } public plugin_end() { SQL_FreeHandle(g_SqlTuple); } public sql_start() { new host[128]; new user[64]; new pass[64]; new database[64]; get_cvar_string("bb_sql_host",host,127); get_cvar_string("bb_sql_user",user,63); get_cvar_string("bb_sql_pass",pass,63); get_cvar_string("bb_sql_database",database,63); g_SqlTuple = SQL_MakeDbTuple(host,user,pass,database); new q_Command[512]; format(q_Command,511,"CREATE TABLE IF NOT EXISTS `bb_player` (`id` int NOT NULL AUTO_INCREMENT, `nick` VARCHAR(32), `steamid` VARCHAR(32), PRIMARY KEY(id))"); SQL_ThreadQuery(g_SqlTuple,"sql_start_handler",q_Command); } public sql_start_handler(FailState, Handle:Query, Errcode, Error[], Data[], DataSize) { g_BoolSqlOK=1; if(Errcode) { g_BoolSqlOK=0; log_to_file("addons/amxmodx/logs/bb_classmod.log","Error on Table query: %s",Error); } if(FailState == TQUERY_CONNECT_FAILED) { log_to_file("addons/amxmodx/logs/bb_classmod.log","Could not connect to SQL database."); g_BoolSqlOK=0; return PLUGIN_CONTINUE; } else if(FailState == TQUERY_QUERY_FAILED) { log_to_file("addons/amxmodx/logs/bb_classmod.log","Table Query failed."); g_BoolSqlOK=0; return PLUGIN_CONTINUE; } [...(Jeszcze nic nie ma)] return PLUGIN_CONTINUE; }
Edit:
Troszeczkę przemyślałem problem sprawdziłem kilka rzeczy.
Przy włączeniu serwera wyskakuje błąd:
L 03/09/2011 - 16:38:21: Error on Table query: L 03/09/2011 - 16:38:21: Could not connect to SQL database.Bez względu czy baza danych jest pusta czy nie.
Plugin tworzy tabele w bazie dopiero po zmianie mapy, wczytaniu amxx.cfg. Nie wiem czemu przy uruchomieniu serwer ma wczytany jakiś zły amxx.cfg i server.cfg, ale jest to serwer testowy na Windows. Efekt ten nie występuje na serwerze właściwym, więc nie ma czym się przejmować.
Pozostaje tylko błąd
L 03/09/2011 - 16:38:40: Error on Table query: 4<Błąd wywala bez względu na to czy baza danych jest pusta czy też nie.
Czyli coś chyba musi być nie tak z zapytaniem do bazy danych.
CREATE TABLE IF NOT EXISTS `bb_player` (`id` int NOT NULL AUTO_INCREMENT, `nick` VARCHAR(32), `steamid` VARCHAR(32), PRIMARY KEY(id))Proszę o pomoc z tym zapytaniem, ponieważ pierwszy raz mam styczność z bazami danych. Teorie już znam problem mam tylko w budowaniu zapytań.
Dziwi mnie tylko to że to zapytanie tworzy taką tabele jaką chce i potrzebuje, mimo to wywala błąd. "Zabezpieczenia" w sql_start_handler() wykrywają ten błąd przez co plugin nie może "dalej ruszyć". Google nic nie podpowiada na temat tego błędu w zapytaniu.
Proszę o szybką pomoc.
Użytkownik diggs edytował ten post 02.04.2011 17:24