Erfolgssystem // MySQL 2014

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,
    bin gerade ein wenig am machen und tun und seit gestern Abend hab ich hier ein relativ ausgereiftes Erfolgssystem-Konzept zu liegen was soweit auch fertig ist (gescriptet), nur in der Anwendung (also inGame) dann Alarm schlägt.


    Als erstes checke ich, ob der Eintrag existiert:
    stock achieveAlreadyExists(playerid, event[]) {
    if(Spieler[playerid][sLogged] == 1) {
    new query[300];
    format(query, sizeof(query), "SELECT * FROM `achievements` WHERE userID = '%d' AND achievementName = '%s'", getUserID(playerid), event);
    mysql_query(query);
    printf(query);
    printf("%d", mysql_errno());
    printf("%d", mysql_warning_count());
    return mysql_num_rows();
    }
    else {
    return 0;
    }
    }


    Doch er gibt mir den Errorcode "2014" aus. Woher dieser kommt kann ich mir nicht ausmalen, weiß es jemand von euch evtl.? Soweit ist der Query nämlich richtig und klappt auch im PMA.


    Grüße.

  • als erstes würde ich es so probieren, falls es probleme mit den namen gibt:

    SQL
    SELECT * FROM `achievements` WHERE `userID` = '%d' AND `achievementName` = '%s'


    ansonsten schätze ich, dass du andere abfragen mithilfe von Mysql_Store_Result (oder) so speicherst, aber die results nie freigibst.

  • als erstes würde ich es so probieren, falls es probleme mit den namen gibt:

    SQL
    SELECT * FROM `achievements` WHERE `userID` = '%d' AND `achievementName` = '%s'


    ansonsten schätze ich, dass du andere abfragen mithilfe von Mysql_Store_Result (oder) so speicherst, aber die results nie freigibst.


    Nein ich free alle results wieder. Und das mit den Backquotes hat nichts gebracht. :(
    Wie gesagt, im PMA kann ich den Query ohne Probleme ausführen.


    #e: DT verlinkt.

    Einmal editiert, zuletzt von TutNichts ()

  • Auch nicht, schon vorhin probiert Hauke.


    Debug sagt:

    Code
    [20:43:20] CMySQLHandler::Ping() - Connection is still alive.
    [20:43:20] >> mysql_query( Connection handle: 1 )
    [20:43:20] CMySQLHandler::Query(SELECT * FROM `achievements` WHERE userID = '3' AND achievementName = 'Login') - Successfully executed.
    [20:43:20] >> mysql_num_rows( Connection handle: 1 )
    [20:43:20] CMySQLHandler::NumRows() - You cannot call this function now. (Reason: Dead Connection)
    [20:43:20] >> mysql_query( Connection handle: 1 )
    [20:43:20] CMySQLHandler::Query(INSERT INTO `achievements` (userID, achievementName, achievementTime, achievementValue)VALUES ('3', 'Login', '1346870600', '0')) - An error has occured. (Error ID: 2014, Commands out of sync; you can't run this command now)
    [20:43:20] >> mysql_ping( Connection handle: 1 )


    Zeile 5 macht mir Sorgen. :-8

  • Keine Connection aufgebaut?

    Falsche Freunde: Fragen nach Kippen !
    Wahre Freunde: Sind der Grund, warum du keine Kippen hast !
    Falsche Freunde: Nennen deine Eltern Frau/Herr !
    Wahre Freunde: Nennen deine Eltern Mom/Dad !
    Falsche Freunde: Holen dich aus dem Knast und sagen dir, was getan hast, war falsch !
    Wahre Freunde: Sitzen in der Zelle neben dir und sagen: Scheiße...wir haben‘s verkackt...war aber verdammt lustig ! :P
    Falsche Freunde: Haben dich noch nie weinen sehen !
    Wahre Freunde: Weinen mit dir !
    Falsche Freunde: Werden dich stehen lassen, wenn die Menge das tut !
    Wahre Freunde: Werden der kompletten Menge den Arsch treten, die dich stehen gelassen hat ! c:
    Falsche Freunde: Bleiben für ne Weile !
    Wahre Freunde: Bleiben ein Leben lang !
    Falsche Freunde: Werden die Person, die Scheiße über dich erzählt, blöd vollabern !
    Wahre Freunde: Werden sie einfach ausknocken !
    Falsche Freunde: Werden das hier ignorieren !
    Wahre Freunde: Es Kopieren !

  • RunAway: totaler Blödsinn diese Frage. Erst lesen, denken und dann posten..


    Zum Problem: Schau mal hier: http://www.selfphp.de/forum/showthread.php?t=20497


    Wieso, laut der Debug Meldung gibt es keine atkive Connection :)

    Falsche Freunde: Fragen nach Kippen !
    Wahre Freunde: Sind der Grund, warum du keine Kippen hast !
    Falsche Freunde: Nennen deine Eltern Frau/Herr !
    Wahre Freunde: Nennen deine Eltern Mom/Dad !
    Falsche Freunde: Holen dich aus dem Knast und sagen dir, was getan hast, war falsch !
    Wahre Freunde: Sitzen in der Zelle neben dir und sagen: Scheiße...wir haben‘s verkackt...war aber verdammt lustig ! :P
    Falsche Freunde: Haben dich noch nie weinen sehen !
    Wahre Freunde: Weinen mit dir !
    Falsche Freunde: Werden dich stehen lassen, wenn die Menge das tut !
    Wahre Freunde: Werden der kompletten Menge den Arsch treten, die dich stehen gelassen hat ! c:
    Falsche Freunde: Bleiben für ne Weile !
    Wahre Freunde: Bleiben ein Leben lang !
    Falsche Freunde: Werden die Person, die Scheiße über dich erzählt, blöd vollabern !
    Wahre Freunde: Werden sie einfach ausknocken !
    Falsche Freunde: Werden das hier ignorieren !
    Wahre Freunde: Es Kopieren !

  • Die MySQL Plugins haben momentan irgendwie gerne mal das Problem, wenn eine bestimmte Zeit kein Datenaustausch stattfindet, das einfach die Connection aus dem Sync gerissen wird.


    Konnte ich schon mehrfach beobachten.
    Gelöst habe ich das immer per Timer, der alle paar minuten irgendeinen Blödsinn aus der Datenbank gefischt hat.


    Möglicherweise könnte das dein Problem lösen

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Ich werd's probieren, aber mysql_ping gibt unmittelbar vor dem Query:

    Code
    [20:43:20] CMySQLHandler::Ping() - Connection is still alive.


    aus. Aber gut, ein Versuch ist es wert.


    #e:

    Die MySQL Plugins haben momentan irgendwie gerne mal das Problem, wenn eine bestimmte Zeit kein Datenaustausch stattfindet, das einfach die Connection aus dem Sync gerissen wird.


    Konnte ich schon mehrfach beobachten.
    Gelöst habe ich das immer per Timer, der alle paar minuten irgendeinen Blödsinn aus der Datenbank gefischt hat.


    Möglicherweise könnte das dein Problem lösen


    Ich hab jetzt einen Timer auf 0,1 Sek (1000) eingestellt und dort sendet er einen Query (hab's einfach mal derbe übertrieben), doch der sagt immer: Dead connection.


    RunAway: totaler Blödsinn diese Frage. Erst lesen, denken und dann posten..


    Zum Problem: Schau mal hier: http://www.selfphp.de/forum/showthread.php?t=20497


    Schon gesehen, hat mir aber nicht groß geholfen, leider.


    Ist denn kein Reconnect Flag dabei? Oder funktioniert es trotzdem dann nicht?


    mysql_reconnect()?

    Einmal editiert, zuletzt von TutNichts ()