←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Połączenie sie z bazą danych MySQL

Zablokowany

  • +
  • -
diggs - zdjęcie diggs 02.04.2011

Witam.
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
Odpowiedz
Zablokowany