MySQL error

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey,


    undzwar habe ich folgenden fehler in der mysql_log: [19:02:32] CMySQLHandler::Query(INSERT INTO `computer` (username,Gehaeuse--Name,Gehaeuse,Grafikkarte--Name,Grafikkarte,Prozessor--Name,Prozessor,Speicher--Name,Speicher,Mainboard--Name,Mainboard,Netzteil--Name,Netzteil) VALUES ('Excuse.','','0','','0','','0','','0','','0','','0')) - An error has occured. (Error ID: 1064, You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '--Name,Gehaeuse,Grafikkarte--Name,Grafikkarte,Prozessor--Name,Prozessor,Speicher' at line 1)



    und hier mal der insert code


    ocmd:erstellen(playerid,params[])
    {
    new mysql[2000];
    format(mysql,sizeof(mysql),"INSERT INTO `computer` (username,Gehaeuse--Name,Gehaeuse,Grafikkarte--Name,Grafikkarte,Prozessor--Name,Prozessor,Speicher--Name,Speicher,Mainboard--Name,Mainboard,Netzteil--Name,Netzteil) VALUES ('%s','%s','%d','%s','%d','%s','%d','%s','%d','%s','%d','%s','%d')",
    GetName(playerid),sInfo[playerid][GName],sInfo[playerid][GBesitz],sInfo[playerid][GrakaName],sInfo[playerid][GrakaBesitz],sInfo[playerid][PName],sInfo[playerid][PBesitz],sInfo[playerid][SpeicherName],sInfo[playerid][SpeicherBesitz],sInfo[playerid][MainboardName],sInfo[playerid][MainboardBesitz],sInfo[playerid][NetzteilName],sInfo[playerid][NetzteilBesitz]);
    mysql_query(mysql);
    SendClientMessage(playerid,Blue," ** Du hast dir erfolgreich ein Account erstellt ** ");
    return 1;
    }


    PS: Nicht wundern warum der string so hoch ist :D

  • Bevor ich ein neuen Thread mache mache ich es hier rein undzwar wenn ich:

    stock mysql_GetStringByString(Table[], Field[], Where[],Where2[])
    {
    new query[200];
    #pragma unused Where2
    #pragma unused Where
    #pragma unused Table
    new str[512];
    format(query, 512, "%s", Field);
    mysql_store_result();
    mysql_fetch_field(str,1);
    mysql_free_result();
    return str;
    }


    das machen will kommt ein error C:\Dokumente und Einstellungen\Maurice\Desktop\SAMP sachen\Extreme-PR\filterscripts\computer.pwn(442) : error 035: argument type mismatch (argument 1)
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


    und zwar ist das weil ich ein anderes mysql_pluing benutze


    hier mal die zeile mysql_fetch_field(str,1); was soll ich beim ersten Parameter machen ?

  • Welche dieser 13 Zeilen ist Zeile 442?
    Es wird nicht einmal, beim Befehl, ein Query ausgegeben:
    stock mysql_GetStringByString(Table[], Field[], Where[],Where2[])
    {
    // ....
    format(query, 512, "%s", Field);
    mysql_store_result(); // Welchen Query?
    mysql_fetch_field(str,1);
    mysql_free_result();
    return str;
    }

    Versuch es mal mit mysql_fetch_field(1,str) (MySql Fetch Field)
    Du kannst auch mal mysql_get_field("Feldname", str); versuchen, gibt auch einen Wert aus der Datenbank bzw. Tabelle aus.

  • Wenn ich jettze z.B ein Spieler beim einloggen laden lasse, stürtzt der Server ab:


    stock mysql_GetStringByString(Table[], Field[], Where[],Where2[])
    {
    new query[200];
    #pragma unused Where2
    #pragma unused Where
    #pragma unused Table
    new str[512];
    format(query, 512, "%s", Field);
    mysql_fetch_field(1,str);
    return str;
    }


    stock LoadPlayer(playerid)
    {
    strmid(sInfo[playerid][GName], mysql_GetStringByString("computer","GehaeuseName","username",GetName(playerid)), 0, 32, 255);
    strmid(sInfo[playerid][GrakaName], mysql_GetStringByString("computer","GrafikkarteName","username",GetName(playerid)), 0, 32, 255);
    strmid(sInfo[playerid][PName], mysql_GetStringByString("computer","ProzessorName","username",GetName(playerid)), 0, 32, 255);


    return 1;
    }
    public OnPlayerConnect(playerid)
    {
    LoadPlayer(playerid);
    return 1;
    }

  • [13:35:00] ---------------------------
    [13:35:00] MySQL Debugging activated (02/21/14)
    [13:35:00] ---------------------------
    [13:35:00]
    [13:35:26] >> mysql_fetch_field( Connection handle: 1 )
    [13:35:26] CMySQLHandler::FetchFieldName() - You cannot call this function now. (Reason: No results.)



    3:35:26] [debug] Server crashed while executing computer.amx
    [13:35:26] [debug] AMX backtrace:
    [13:35:26] [debug] #0 native mysql_fetch_field () [10005ee0] from mysql.dll
    [13:35:26] [debug] #1 00001de0 in ?? (0x00050268, 0x0005028c, 0x000502c0, 0x00050bf8) from computer.amx
    [13:35:26] [debug] #2 00001a88 in ?? (0x00000000) from computer.amx
    [13:35:26] [debug] #3 000004c4 in public OnPlayerConnect (0x00000000) from computer.amx
    [13:35:26] [debug] Native backtrace:
    [13:35:26] [debug] #0 7855b9f0 in ?? () from C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.4148_x-ww_d495ac4e\MSVCR90.dll
    [13:35:26] [debug] #1 78487155 in ?? () from C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.4148_x-ww_d495ac4e\MSVCP90.dll
    [13:35:26] [debug] #2 10008ee0 in ?? () from plugins\mysql.dll
    [13:35:26] [debug] #3 10005f68 in ?? () from plugins\mysql.dll
    [13:35:26] [debug] #4 004010b6 in ?? () from samp-server.exe
    [13:35:26] [debug] #5 00fb58ca in ?? () from plugins\crashdetect.dll
    [13:35:26] [debug] #6 00fb774f in ?? () from plugins\crashdetect.dll
    [13:35:26] [debug] #7 00fb0834 in ?? () from plugins\crashdetect.dll
    [13:35:26] [debug] #8 00fb591a in ?? () from plugins\crashdetect.dll
    [13:35:26] [debug] #9 0046a25f in ?? () from samp-server.exe
    [13:35:26] [debug] #10 009b0178 in ?? ()

  • Mit GetStringByString willst du bestimmt einen Wert aus der Datenbank/Tabelle auslesen, richtig?
    Dann bau dir mal ein ordentlichen Query...
    Kannst ja mal dass versuchen:

    stock mysql_GetStringByString(Table[], Field[], Where[],Where2[])
    {
    new query[128],str[128];
    format(query, sizeof query, "SELECT `%s` FROM `%s` WHERE `%s` = '%s';", Field,Table,Where,Where2);
    mysql_query(query);
    mysql_store_result(query);
    mysql_fetch_field(1,str);
    mysql_free_result();
    return str;
    }

  • So... Der Server stürtzt immer noch ab aber mit anderen meldungen: 4:06:58]


    [14:06:58] ---------------------------
    [14:06:58] MySQL Debugging activated (02/21/14)
    [14:06:58] ---------------------------
    [14:07:18] >> mysql_query( Connection handle: 1 )
    [14:07:18] CMySQLHandler::Query(SELECT `GehaeuseName` FROM `computer` WHERE `username` = 'Excuse.';) - Successfully executed.
    [14:07:18] >> mysql_store_result( Connection handle: 1 )
    [14:07:18] CMySQLHandler::StoreResult() - Result was stored.
    [14:07:18] >> mysql_fetch_field( Connection handle: 1 )



    stock mysql_GetStringByString(Table[], Field[], Where[],Where2[])
    {
    new query[128],str[128];
    format(query, sizeof query, "SELECT `%s` FROM `%s` WHERE `%s` = '%s';", Field,Table,Where,Where2);
    mysql_query(query);
    mysql_store_result(1);
    mysql_fetch_field(1,str);
    mysql_free_result(1);
    return str;
    }


    ich habe anstatt mysql_store_result(query) dort eine 1 hingemacht ( connectenhandle ) sonst kommt ein error



    4:07:18] [debug] #0 native mysql_fetch_field () [10005ee0] from mysql.dll
    [14:07:18] [debug] #1 00001e54 in ?? (0x00050268, 0x0005028c, 0x000502c0, 0x00050690) from computer.amx
    [14:07:18] [debug] #2 00001a88 in ?? (0x00000000) from computer.amx
    [14:07:18] [debug] #3 000004c4 in public OnPlayerConnect (0x00000000) from computer.amx
    [14:07:18] [debug] Native backtrace:
    [14:07:18] [debug] #0 7855b9f0 in ?? () from C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.4148_x-ww_d495ac4e\MSVCR90.dll
    [14:07:18] [debug] #1 78487155 in ?? () from C:\WINDOWS\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.4148_x-ww_d495ac4e\MSVCP90.dll
    [14:07:18] [debug] #2 10008f3d in ?? () from plugins\mysql.dll
    [14:07:18] [debug] #3 10005f68 in ?? () from plugins\mysql.dll
    [14:07:18] [debug] #4 004010b6 in ?? () from samp-server.exe
    [14:07:18] [debug] #5 00fb58ca in ?? () from plugins\crashdetect.dll
    [14:07:18] [debug] #6 00fb774f in ?? () from plugins\crashdetect.dll
    [14:07:18] [debug] #7 00fb0834 in ?? () from plugins\crashdetect.dll
    [14:07:18] [debug] #8 00fb591a in ?? () from plugins\crashdetect.dll
    [14:07:18] [debug] #9 0046a25f in ?? () from samp-server.exe
    [14:07:18] [debug] #10 009b0178 in ?? ()

  • Denke mal der Fehler liegt an LoadPlayer...
    Bin mir nicht ganz sicher, aber so sollte es denke mal funktionieren:

    stock LoadPlayer(playerid)
    {
    strcat(sInfo[playerid][GName], mysql_GetStringByString("computer","GehaeuseName","username",GetName(playerid)));
    strcat(sInfo[playerid][GrakaName], mysql_GetStringByString("computer","GrafikkarteName","username",GetName(playerid)));
    strcat(sInfo[playerid][PName], mysql_GetStringByString("computer","ProzessorName","username",GetName(playerid)));
    return 1;
    }


    Wenn nicht mach bei OnPlayerConnect "LoadPlayer" weg und gib einfach mal mit der Konsole den Wert aus.

    printf("db wert: %s", mysql_GetStringByString("computer","GehaeuseName","username",GetName(playerid)));

  • ok beides ging nicht es ist immer der server aus gegangen es liegt also an mysql_getstringbystring ich möchte bei dieser funktion einen string aus einen string holen.
    stock mysql_GetStringByString(Table[], Field[], Where[],Where2[])
    {
    new query[128],str[128];
    format(query, sizeof query, "SELECT `%s` FROM `%s` WHERE `%s` = '%s';", Field,Table,Where,Where2);
    mysql_query(query);
    mysql_store_result(1);
    mysql_fetch_field(1,str);
    mysql_free_result(1);
    return str;
    }



    mysql r5 blueg