[Ajuda] Probleminha com MySQL
#1

Amigos eu criei um tуpico sobre tamanho das linhas esses dias atrбs e jб resolvi o meu problema, porйm agora eu criei uma forma do sistema se conectar a database e verfiicar se deu certo ou nгo a conexгo, porйm nгo estб funcionando, fiz um debug com mensagens que aparecem no console, porйm nem sequer as mensagens aparecem, ou seja, a Callback OnQueryError nгo estб sendo chamada, segue o cуdigo:

pawn Код:
public MySQL_Start(host[],user[],database[],password[])
{
    MySQL = mysql_connect(host,user,database,password);
    new Cache:result = mysql_query(MySQL,"SHOW TABLES");
    new rows,fields;
    cache_get_data(rows,fields,MySQL);
    if(rows)
    {
        new dest[MAX_PLAYER_NAME];
        for(new i=0; i<rows; i++)
        {
            cache_get_row(i, 0, dest);
            printf("[MySQL] Tabela '%s' verificada com sucesso.",dest);
        }
    }
    cache_delete(result);
    return 1;
}

public OnQueryError(errorid, error[], callback[], query[], connectionHandle)
{
    printf("[MySQL] ERROR %d: %s | Query: %s | Callback: %s",errorid, error, query, callback);
    switch(errorid)
    {
        case CR_SERVER_GONE_ERROR: mysql_reconnect(connectionHandle);
        case 2003: SendRconCommand("exit");
    }
    return 1;
}
NOTA: A public MySQL_Start eh chamada em OnGameModeInit

eu acho que o cуdigo era para funcionar, tendo em vista que esses erros sгo detectados no mysql_log, segue aqui o log do mysql:

Код:
[21:27:05] [ERROR] CMySQLConnection::Connect - (error #2003) Can't connect to MySQL server on 'localhost' (10061)
[21:27:05] [ERROR] CMySQLQuery::Execute - (error #2006) MySQL server has gone away
[21:27:05] [WARNING] cache_get_data - no active cache
[21:27:05] [WARNING] CMySQLHandle::DeleteSavedResult - invalid result id ('0')
[21:27:06] [ERROR] CMySQLConnection::Connect - (error #2003) Can't connect to MySQL server on 'localhost' (10061)
[21:27:06] [ERROR] CMySQLConnection::Connect - (error #2003) Can't connect to MySQL server on 'localhost' (10061)
[21:27:06] [ERROR] CMySQLConnection::Connect - (error #2003) Can't connect to MySQL server on 'localhost' (10061)
Se alguйm puder me dar uma luz, agradeзo desde jб.
Reply
#2

UP

oloko gente, ninguйm sabe como me ajudar??
Reply
#3

Aparentemente, hб falha na conexгo do plugin com o MySQL. Certifique-se de estar passando os parвmetros corretamente no connect.

Quanto tempo Chainksain =).
Reply
#4

entгo, mas a idйia eh essa mesmo, a falha na conexгo й proposital, pois deveria aparecer uma mensagem no console quando hб esta falha, sу que a falha acontece porйm nгo aparece nenhuma mensagem no console..

pois й nй, a muito eu havia saido do SAMP, porйm estou de volta, mas desta vez estou independente mesmo, sem FusioN, sem Chefгo, sem nada.. estou criando um game mode inteiramente feito por mim, assim que terminar irei abrir meu servidor
Reply
#5

Mas vocк estб passando os parвmetros corretamente no connect? OnQueryError й chamada quando ocorre algum erro no processamento de uma query.

Pra ser sincero atй agora eu nгo entendi muito bem o que deseja fazer. Vocк deseja verificar se estб conectado ao DB, ou se a query foi executada com sucesso?. Pelo que pude perceber, vocк deseja verificar se a conexгo foi bem sucedida, e vocк pode fazer isto via mysql_ping:

pawn Код:
if(mysql_ping()) print("MySQL connection is still alive!");
// ...
if(!mysql_ping()) print("MySQL connection is dead!");
Reply
#6

sim, eu desejo verificar se a conexгo foi estabelecida com sucesso ou nгo, porйm nгo existe mysql_ping na versгo R39 e eu tenho que usar essa versao pq ela tem recursos q eu uso e q nao tem na versгo R7...

tecnicamente falando, OnQueryError deveria ser chamada qdo executa-se a query SHOW TABLES; pois haveria um erro com a query (erro 2003)

de acordo com a docmentaзгo do MySQL o erro 2003 й o seguinte:

Quote:

Error: 2003 (CR_CONN_HOST_ERROR)

Message: Can't connect to MySQL server on '%s' (%d)

fonte da informaзгo: http://dev.mysql.com/doc/refman/5.1/...es-client.html

se olhar no log que eu postei do mysql_log, eh justamente este erro que ocorre, porйm a public OnQueryError nгo й chamada.
Reply
#7

Essa OnQueryError sempre deu erro aqui tambйm, nunca й chamada
Reply
#8

entao deve ser bug do plugin.. acho que vou modificar a source do plugin entгo, corrigir este bug ou criar a funзгo mysql_ping
Reply
#9

Vocк nгo pode usar OnQueryError(O Prуpio nome jб diz , Erro na Query) para verificar se deu erro na conexгo , vocк deverб usar o mysql_errno() ou mysql_ping() depende de sua versгo do MySQL , Versхes r33+ usa-se o mysql_errno();
pawn Код:
if(mysql_errno() != 0)
    return SendRconCommand("exit");
Ative os Logs do MySQL e poste os aqui.
(R33+)
pawn Код:
mysql_log(LOG_ALL);
R7
pawn Код:
mysql_debug(1);
Reply
#10

opa brigadгo hein! adiantou meu lado
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)