[Ayuda] MySQL error (strpack/format/Input line too long)
#1

Domingo 28 de septiembre del 2014
Buen dнa, tarde o noche. Como no sй que poner en este tipo de mensajes, ya que no suelo pedir ayuda en los foros sobre script, me gustarнa ir directo al tema.

Empecй a trabajar con MySQL y tras dos dнas de programaciуn me surgiу un error (si, soy nuevo en programaciуn pawn, no llevo mбs de 3 meses). El error es que no registra en mi base de datos la cuenta, al principio me surgiу el error Input line too long ya que fui agregando mбs datos para almacenar (ya que es un GM desde 0) y leн varios temas sobre esto y probй diferentes soluciones como usar strpack o format y el problema no es que me salte error o un warning si no que: el sistema en sн no me funciona. Aquн dejarй el cуdigo (en caso de necesitar mбs lineas favor de avisarme):

Код:
 
#define          			function%0(%1) 		             		forward %0(%1); public %0(%1)

// -====================
WP_Hash(user_data[playerid][Password], 129, inputtext);

            format(query, sizeof(query), "INSERT INTO `players`(`Death`, `Username`, `Password`, `IP`, `Admin`, `Money`, `skill_pistol`, `skill_spistol`, `skill_deagle`,`skill_shotgun`, `skill_sawnoff`, `skill_spaz`, `skill_uzi`,");
            format(string, sizeof(string), " `skill_mp5`, `skill_ak47`, `skill_m4`, `skill_sniper`,  `Weapon1`, `Ammo1`, `Weapon2`, `Ammo2`, `Weapon3`, `Ammo3`, `Weapon4`, `Ammo4`, `Weapon5`, `Ammo5`, `Weapon6`, `Ammo6`, `Weapon7`, `Ammo7`,");
            strpack(query, string);
            format(string, sizeof(string), " `Weapon8`, `Ammo8`, `Weapon9`, `Ammo9`, `Weapon10`, `Ammo10`, `Weapon11`, `Ammo11`, `Weapon12`, `Ammo12` ,`PosX`, `PosY`, `PosZ`, `RotZ`, `interiorid`, `worldid`)");
            strpack(query, string);
            format(string, sizeof(string), " VALUES (false,'%e', '%s', '%s', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 0, 0)", Name[playerid],user_data[playerid][Password], IP[playerid]);
            strpack(query, string);
            mysql_tquery(mysql, query, "OnAccountRegister", "i", playerid);
// -====================

function OnAccountRegister(playerid)
{
   user_data[playerid][ID] = cache_insert_id();
    printf("MySQL info: Nueva cuenta registrada ID: %d",user_data[playerid][ID]);
    return 1;
}
// -====================
Reply
#2

No deberнas usar strpack si lo que quieres hacer es unir dos strings, mejor usa strcat.

pawn Код:
query = "INSERT INTO `players`(`Death`, `Username`, `Password`, `IP`, `Admin`, `Money`, `skill_pistol`, `skill_spistol`, `skill_deagle`,`skill_shotgun`, `skill_sawnoff`, `skill_spaz`, `skill_uzi`,";

    strcat(query, " `skill_mp5`, `skill_ak47`, `skill_m4`, `skill_sniper`,  `Weapon1`, `Ammo1`, `Weapon2`, `Ammo2`, `Weapon3`, `Ammo3`, `Weapon4`, `Ammo4`, `Weapon5`, `Ammo5`, `Weapon6`, `Ammo6`, `Weapon7`, `Ammo7`,");
    strcat(query, " `Weapon8`, `Ammo8`, `Weapon9`, `Ammo9`, `Weapon10`, `Ammo10`, `Weapon11`, `Ammo11`, `Weapon12`, `Ammo12` ,`PosX`, `PosY`, `PosZ`, `RotZ`, `interiorid`, `worldid`)");

    format(string, sizeof(string), " VALUES (false,'%s', '%s', '%s', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 0, 0)", Name[playerid], user_data[playerid][Password], IP[playerid]);

    strcat(query, string);

    mysql_tquery(mysql, query, "OnAccountRegister", "i", playerid);
Tambiйn recuerda que para usar %e debes usar mysql_format y no es necesario usarlo en los nombres de los jugadores.
Reply
#3

Quote:
Originally Posted by LuiisRubio
Посмотреть сообщение
No deberнas usar strpack si lo que quieres hacer es unir dos strings, mejor usa strcat.

pawn Код:
query = "INSERT INTO `players`(`Death`, `Username`, `Password`, `IP`, `Admin`, `Money`, `skill_pistol`, `skill_spistol`, `skill_deagle`,`skill_shotgun`, `skill_sawnoff`, `skill_spaz`, `skill_uzi`,";

    strcat(query, " `skill_mp5`, `skill_ak47`, `skill_m4`, `skill_sniper`,  `Weapon1`, `Ammo1`, `Weapon2`, `Ammo2`, `Weapon3`, `Ammo3`, `Weapon4`, `Ammo4`, `Weapon5`, `Ammo5`, `Weapon6`, `Ammo6`, `Weapon7`, `Ammo7`,");
    strcat(query, " `Weapon8`, `Ammo8`, `Weapon9`, `Ammo9`, `Weapon10`, `Ammo10`, `Weapon11`, `Ammo11`, `Weapon12`, `Ammo12` ,`PosX`, `PosY`, `PosZ`, `RotZ`, `interiorid`, `worldid`)");

    format(string, sizeof(string), " VALUES (false,'%s', '%s', '%s', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 0, 0)", Name[playerid], user_data[playerid][Password], IP[playerid]);

    strcat(query, string);

    mysql_tquery(mysql, query, "OnAccountRegister", "i", playerid);
Tambiйn recuerda que para usar %e debes usar mysql_format y no es necesario usarlo en los nombres de los jugadores.
Sigue sin funcionar.
Reply
#4

Revisa tu mysql_log.txt. Ahн encontrarбs el problema.
Reply
#5

Quote:
Originally Posted by LuiisRubio
Посмотреть сообщение
No deberнas usar strpack si lo que quieres hacer es unir dos strings, mejor usa strcat.

pawn Код:
query = "INSERT INTO `players`(`Death`, `Username`, `Password`, `IP`, `Admin`, `Money`, `skill_pistol`, `skill_spistol`, `skill_deagle`,`skill_shotgun`, `skill_sawnoff`, `skill_spaz`, `skill_uzi`,";

    strcat(query, " `skill_mp5`, `skill_ak47`, `skill_m4`, `skill_sniper`,  `Weapon1`, `Ammo1`, `Weapon2`, `Ammo2`, `Weapon3`, `Ammo3`, `Weapon4`, `Ammo4`, `Weapon5`, `Ammo5`, `Weapon6`, `Ammo6`, `Weapon7`, `Ammo7`,");
    strcat(query, " `Weapon8`, `Ammo8`, `Weapon9`, `Ammo9`, `Weapon10`, `Ammo10`, `Weapon11`, `Ammo11`, `Weapon12`, `Ammo12` ,`PosX`, `PosY`, `PosZ`, `RotZ`, `interiorid`, `worldid`)");

    format(string, sizeof(string), " VALUES (false,'%s', '%s', '%s', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, 0, 0)", Name[playerid], user_data[playerid][Password], IP[playerid]);

    strcat(query, string);

    mysql_tquery(mysql, query, "OnAccountRegister", "i", playerid);
Tambiйn recuerda que para usar %e debes usar mysql_format y no es necesario usarlo en los nombres de los jugadores.
Quote:
Originally Posted by LuiisRubio
Посмотреть сообщение
Revisa tu mysql_log.txt. Ahн encontrarбs el problema.
Код:
[14:01:24] [DEBUG] mysql_connect - host: "127.0.0.7", user: "root", database: "server_zombie", password: "****", port: 3306, autoreconnect: true, pool_size: 2
[14:01:24] [DEBUG] CMySQLHandle::Create - creating new connection..
[14:01:24] [DEBUG] CMySQLHandle::CMySQLHandle - constructor called
[14:01:24] [DEBUG] CMySQLHandle::Create - connection created (id: 1)
[14:01:24] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[14:01:24] [DEBUG] CMySQLConnection::Connect - connection was successful
[14:01:24] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[14:01:24] [DEBUG] mysql_errno - connection: 1
[14:01:24] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[14:01:24] [DEBUG] CMySQLConnection::Connect - establishing connection to database...
[14:01:24] [DEBUG] CMySQLConnection::Connect - connection was successful
[14:01:24] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[14:01:24] [DEBUG] CMySQLConnection::Connect - connection was successful
[14:01:24] [DEBUG] CMySQLConnection::Connect - connection was successful
[14:01:24] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[14:01:24] [DEBUG] CMySQLConnection::Connect - auto-reconnect has been enabled
[14:01:52] [DEBUG] mysql_format - connection: 1, len: 128, format: "SELECT `Password`, `ID` FROM `players` WHERE `Username` = '%e' LIMIT 1"
[14:01:52] [DEBUG] mysql_tquery - connection: 1, query: "SELECT `Password`, `ID` FROM `players` WHERE `Username` = '[root", callback: "OnAccountCheck", format: "i"
[14:01:52] [DEBUG] CMySQLQuery::Execute[OnAccountCheck] - starting query execution
[14:01:52] [DEBUG] CMySQLQuery::Execute[OnAccountCheck] - query was successfully executed within 0.458 milliseconds
[14:01:52] [DEBUG] CMySQLResult::CMySQLResult() - constructor called
[14:01:52] [DEBUG] Calling callback "OnAccountCheck"..
[14:01:52] [DEBUG] cache_get_data - connection: 1
[14:01:52] [DEBUG] CMySQLResult::~CMySQLResult() - deconstructor called
Ni siquiera logro ver que haya ejecutado la funciуn :v
Reply
#6

Entonces el error no estб relacionado con MySQL. El error estб mбs bien en el diбlogo, o en la forma que estбs tratando de ejecutar todo ese cуdigo. Para ayudarte necesitarнa mбs cуdigo.
Reply
#7

Quote:
Originally Posted by LuiisRubio
Посмотреть сообщение
Entonces el error no estб relacionado con MySQL. El error estб mбs bien en el diбlogo, o en la forma que estбs tratando de ejecutar todo ese cуdigo. Para ayudarte necesitarнa mбs cуdigo.
No me molesta colocar el GM completo, ya que no es un gran hallazgo, pero aъn asн el cуdigo se borra automбticamente en un hora :v

http://pastebin.com/K2ZJ92nr
Reply
#8

їEstбs usando algъn filterscript que use diбlogos?
Reply
#9

No...
Reply
#10

Bueno, entonces lo ъnico que se me ocurre ahora que podrнa estar causando ese error es:

a) El tamaсo de estas dos variables.

pawn Код:
new query[9999], string[999];
No creo que necesites tanto, pero podrнas cambiar el tamaсo de la primera a 1028, y la otra a 256.

b) Podrнas estar usando dialogos en algъn otro include, o script sin que te des cuenta.

Para arreglar esto simplemente retorna 0 en vez de 1 en OnDialogResponse.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)