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


Dodatki SourceMod



Temat jest zamknięty








