MySQL Fehler

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
  • Sehr geehrte Community,
    da ich seit einem Jahr nichts mehr mit MySQL gemacht habe und nun direkt wieder eingestiegen bin, habe ich dementsprechend auch das erste Probleme schon.


    Fehler:

    Error (0): Failed to exeute query. Commands out of sync; you can't run this command now.


    Betroffene Zeilen:

    format(query, sizeof(query), "INSERT INTO `samp_houses` (`houseid`,`hX`,`hY`,`hZ`,`hBuyable`,`hPrice`,`hInt`,`hOwner`) VALUES(%d, %f, %f, %f, 1, %d, %d, '%s')", ID, x, y, z, houseCost, houseInt, houseOwner);
    mysql_query(query);
    mysql_free_result();

  • 1. Was für ein MySQL Plugin benutzt du ? (denke mal das Strickenkid, denke, dass die Verbindung nicht exisitiert, oder du den Handle nicht initialisiert hast; poste mal den kompletten Server Log
    2. Ist mysql_free_result bei einem INSERT/Update Query unnötig, da du keinen Speicher belegst (nur bei SELECT Query, und nur wenn du mysql_store_result() davor verwendet hast).


    LG

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • Ist das Plugin von Strickenkid, die Verbindung muss ja existieren, schließlich können auch Accounts erstellt werden ohne jegliche Fehlermeldungen.
    Wie gesagt, hab lange nichts mehr mit MySQL gemacht.

  • Poste mal den Code davor.
    Wenn du mysql_free_result() alleine ohne mysql_store_result() verwendest, lösche es ;)


    LG

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.


  • stock createHouse(Float:x, Float:y, Float:z, houseCost, houseInt, houseOwner[])
    {
    new countID = mysql_query("SELECT * FROM `samp_houses`");
    new ID = countID +1, query[256];
    printf("%d - countID", countID);
    printf("%d - ID", ID);
    format(query, sizeof(query), "INSERT INTO `samp_houses` (`houseid`,`hX`,`hY`,`hZ`,`hBuyable`,`hPrice`,`hInt`,`hOwner`) VALUES(%d, %f, %f, %f, 1, %d, %d, '%s')", ID, x, y, z, houseCost, houseInt, houseOwner);
    mysql_query(query);
    loadHouse(ID);
    return 1;
    }

  • Okay, okay.
    Erstmal würde ich den Code in die richtige logische Reihenfolge bringen.
    Dann zeig mal die loadHouse Funktion.


    LG

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • Dein Code ist generell sinnlos.
    Du führst einen SELECT Query aus und speicherst die Rückgabe ? Sinnlos,
    da der Query nur 0 returnt beim Erfolg, beim Fehler einen Error-Code.
    Dann mit der nicht-brauchbaren Rückgabe, versuchst du dann auch Häuser zu laden ?


    LG

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • Die ID der Häuser wird gezählt und zunächst wird die ID für das neue Haus +1 gesetzt, und dieses Haus wird dann mit der ID in die Datenbank gespeichert.
    Später wird das ganze dann noch direkt geladen.

  • Damit können sehr viele Fehler reinkommen.
    Wieso nutzt du nicht einfach die AI Funktion von Mysql?

    new countID = mysql_query("SELECT * FROM `samp_houses`");
    new ID = countID +1, query[256];
    printf("%d - countID", countID);
    printf("%d - ID", ID);

    Außerdem wird bei dem Query nur true oder Error returnt..
    Du müsstest noch mysql_num_rows rein machen ;)

  • Wie genau meinst du das?

  • Ja nehmen wir mal an, es wurde zwischendurch iwo ein Haus gelöscht
    bei 30 IDs wurde die 15 gelöscht,
    so dann wird dieser 'Select' query ausgeführt und mit num_rows würde dann
    nur 30 wieder zurückkommen, und die ID existiert aber bereits.
    Da kann es zu Überschneidungen kommen.