Serverlog ist komisch, und Probleme mit MySQL verbindung bzw. Daten

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
  • Hallo liebe User.


    Wenn ich den Serve rstarte , verbindet er sich mit der MySQL Datenbank.
    So.
    Soweit so gut.
    Nun, wenn ich eine frische Version, von der mysql datenbank hochlade (ich habe das Sin City Roleplay script von Seif...) , mich neu registriere, dann mich neu einloggen will komme ich nur zu folgenden Screen:



    Wenn ich mich dann versuche neu einzuloggen, bin ich immer noch auf dem Server laut Server.
    Also ich logge mich aus > SamQuest steht immer noch in der Connection list.


    Und hier die Serverlog:


    Klick für Serverlog (txt im Webbrowser)
    Kann sie nicht hochladen da sie zu groß ist...
    WEnn ihr die Serverlog runtergeladen habt, dann schaut sie euch mal an..
    Am Schluss sind ganz komische Aktionen, nur das datum [17:03:33] und dann danach nichts, und dass geht immer so weiter..


    Edit: Link korrigiert.

  • Kay kleinen moment:


    PlayerHasItem(playerid, itemtype, productclass=PROD_ITEM)
    {
    new prodSQLId;
    for(new i = 0;i < MAX_ITEMSLOTS; i++)
    {
    if(PlayerItemsInfo[playerid][i][piSQLId] == INVALID_SQL_ID) continue;
    prodSQLId = PlayerItemsInfo[playerid][i][piBaseProductId];
    if((BaseProductInfo[prodSQLId][bpTypeId2] == itemtype) && (BaseProductInfo[prodSQLId][bpTypeId] == productclass))
    {
    return i;
    }
    }
    return INVALID_ITEM_SLOT;
    }


    public TransferPlayerItemToPlayer(playerid, slotid, targetplayerid, targetfreeslot)
    {
    if(PlayerItemsInfo[playerid][slotid][piSQLId] != INVALID_SQL_ID)
    {
    //transfer item
    PlayerItemsInfo[targetplayerid][targetfreeslot][piSQLId] = PlayerItemsInfo[playerid][slotid][piSQLId];
    PlayerItemsInfo[targetplayerid][targetfreeslot][piOwnerId] = PlayerInfo[targetplayerid][pSQLId];//PlayerItemsInfo[playerid][slotid][piOwnerId];
    //PlayerItemsInfo[targetplayerid][targetfreeslot][piType] = PlayerItemsInfo[playerid][slotid][piType];
    //PlayerItemsInfo[targetplayerid][targetfreeslot][piTypeId] = PlayerItemsInfo[playerid][slotid][piTypeId];
    PlayerItemsInfo[targetplayerid][targetfreeslot][piBaseProductId] = PlayerItemsInfo[playerid][slotid][piBaseProductId];
    AddPlayerItem(targetplayerid, targetfreeslot);
    PlayerItemsInfo[targetplayerid][targetfreeslot][piValue] = PlayerItemsInfo[playerid][slotid][piValue];


    DeletePlayerItem(playerid, slotid);
    return 1;
    }
    return 0;
    }



    public DeletePlayerItem(playerid, slotid)
    {
    new query[256];
    ConnectToDatabase();
    if(PlayerItemsInfo[playerid][slotid][piSQLId] != INVALID_SQL_ID)
    {
    format(query,sizeof(query),"DELETE FROM players_items WHERE id=%d",PlayerItemsInfo[playerid][slotid][piSQLId]);
    if(samp_mysql_query(query))
    {
    printf(" SQL: %s",query);
    //empty players slot
    PlayerItemsInfo[playerid][slotid][piSQLId] = 0;
    PlayerItemsInfo[playerid][slotid][piOwnerId] = 0;
    //PlayerItemsInfo[playerid][slotid][piType] = 0;
    //PlayerItemsInfo[playerid][slotid][piTypeId] = 0;
    PlayerItemsInfo[playerid][slotid][piBaseProductId] = 0;
    PlayerItemsInfo[playerid][slotid][piValue] = 0;
    return 1;
    }
    }
    return 0;
    }

  • Also ich hab hier nochwas:


    public AddPlayerItem(playerid, slotid)
    {
    new query[256];


    ConnectToDatabase();


    printf("Adding Item to Player %d....", playerid);
    format(query, sizeof(query), "INSERT INTO players_items (id, ownerid, baseproductid, value) VALUES (null,%d,%d,%d)",
    PlayerItemsInfo[playerid][slotid][piOwnerId], PlayerItemsInfo[playerid][slotid][piBaseProductId],
    PlayerItemsInfo[playerid][slotid][piValue]);
    printf(" SQL: %s",query);
    samp_mysql_query(query);


    format(query, sizeof(query), "SELECT MAX(id) FROM players_items WHERE ownerid=%d", PlayerInfo[playerid][pSQLId]);
    samp_mysql_query(query);
    samp_mysql_store_result();
    new SQLId[12];
    samp_mysql_fetch_row(SQLId);
    printf("Item SQLId: %s",SQLId);
    new itemid = strval(SQLId);
    PlayerItemsInfo[playerid][slotid][piSQLId] = itemid;
    return 1;
    }


    JOa das wars , also wo nur printf("") ohne SQL steht habe ich nicht gefunden :x



    Edit: Hab hier doch was gefunden was nur mit printf"(%s) ist:


    public LoadPlayerItems(playerid)
    {
    new resultline[516];
    new item[4][64];
    new query[256];


    ConnectToDatabase();


    printf("Loading Player %d's Items....", playerid);
    format(query, sizeof(query), "SELECT id, ownerid, baseproductid, value FROM players_items WHERE ownerid=%d", PlayerInfo[playerid][pSQLId]);
    printf(" SQL: %s",query);
    samp_mysql_query(query);
    samp_mysql_store_result();


    new PlayerItemsSlot[MAX_PLAYERS];
    new slotid;
    //Load Players Items
    while(samp_mysql_fetch_row(resultline)==0)
    {
    printf("%s", resultline);
    split(resultline, item, '|');
    slotid = PlayerItemsSlot[playerid]++;
    if(slotid >= MAX_ITEMSLOTS) continue;
    PlayerItemsInfo[playerid][slotid][piSQLId] = strval(item[0]);
    PlayerItemsInfo[playerid][slotid][piOwnerId] = strval(item[1]);
    PlayerItemsInfo[playerid][slotid][piBaseProductId] = strval(item[2]);
    PlayerItemsInfo[playerid][slotid][piValue] = strval(item[3]);
    }

    return 1;
    }

  • Jop mach das, vergleich mal die anderen Funktionen, wie diese die Datena us der DB rausholen, achja, falls der Wert "NULL" in der DB steht, ganz ganz schlecht, die DB sollte immer gefüllt sein, leere Einträge sollten eine 0 haben. Bei mir ist der Server auch immer abgeschmiert, wenn einer Wert "NULL" war.

  • Hab was neues aus der Serverlog bekommen:


    Code
    [14:10:07]  SQL: UPDATE players SET adminlevel=0, playername='Sam_Quest', x=-1871.988525, y=610.568054, z=35.015625, o=89.649864, interior=0, model=66, money=20000, health=80.000000, armor=0.000000, factionid=0, factionrank=0, jobid=0, paycheck=0, premium=0, beenpaid=0, b
    [14:10:07] Error in mysql_query: 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 '' at line 1


    Kann dass an der sampmysql.so liegen?


    Edit: Code angepasst


    PS: Äm, wo finde ich denn diese "line 1" ? 0o