MySQL Problem

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


    Ich habe mir ein MySQL Carsystem aus dem englischen Forum geladen und es um die Fraktion erweitert. Ich habe jetzt diverse Probleme:


    -Der Server startet teilweise nicht.
    -In der Serverlog steht ein Query Fehler
    -Pickups fehlen
    -3D Texte fehlen


    Es ist, als würde OnGameModeInit rumspacken. Ich poste hier mal einen Ausschnitt aus der Serverlog bei Pastebin:
    http://pastebin.com/LG62Dm2j


    Was jedoch das komische ist, dass die Autos erstellt werden, nicht aber in der SQL-Datenbank gespeichert werden und ein Error kommt. Ich poste jetzt mal den anderen Code bei Pastebin
    http://pastebin.com/6Zw8zMcJ


    Hier der Code von ein paar Autos unter OnGameModeInit:
    if(mysql_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)==0)
    {
    SendRconCommand("exit");
    }
    else
    {
    // Create table if it does not exists.
    mysql_query("CREATE TABLE IF NOT EXISTS `Vehicles` \
    (`CarID` INT NOT NULL,`CarFraktion` INT NOT NULL, `Model` INT NOT NULL, `Locked` INT NOT NULL,\
    `CarX` FLOAT NOT NULL, `CarY` FLOAT NOT NULL, `CarZ` FLOAT NOT NULL,\
    `CarA` FLOAT NOT NULL, `Color1` INT NOT NULL, `Color2` INT NOT NULL,\
    `Price` INT NOT NULL, `Sell` INT NOT NULL, `Owner` TEXT NOT NULL);");
    AddVehicle(1,596,0,1,1601.6150,-1683.9769,5.6149,90.3247, 20000, 10000,1); // Polizei 0
    AddVehicle(2,596,0,1,1601.7646,-1688.1367,5.6146,89.8002, 20000, 10000,1); // Polizei 1
    AddVehicle(3,596,0,1,1601.7450,-1692.0846,5.6084,89.8679, 20000, 10000,1); // Polizei 2
    AddVehicle(4,596,0,1,1601.7521,-1696.1365,5.6149,89.7526, 20000, 10000,1); // Polizei 3
    AddVehicle(5,599,0,1,1595.4270,-1711.2113,6.1276,359.5505, 20000, 10000,1);// Polizei 4
    AddVehicle(6,599,0,1,1591.3479,-1711.3928,6.1279,0.5498, 20000, 10000,1); // Polizei 5
    AddVehicle(7,599,0,1,1587.5789,-1711.3036,6.1282,0.5655, 20000, 10000,1); // Polizei 6
    AddVehicle(8,599,0,1,1583.4670,-1711.4435,6.1275,0.5662, 20000, 10000,1); // Polizei 7
    AddVehicle(9,427,0,1,1578.9498,-1710.7675,6.0433,1.2584, 20000, 10000,1); // Polizei 8
    AddVehicle(10,427,0,1,1574.6055,-1710.7103,6.0536,0.3721, 20000, 10000,1); // Polizei 9
    }

  • Zu mySQL errors: Die kannste wörtlich übersetzen:


    "Failed to exeute query. Column count doesn't match value count at row 1." Wird denke ich ein "INSERT INTO" sein - deine Spaltenanzahl ist nicht gleich mit der Werte Anzahl.


    Bsp.: INSERT INTO (spalte1,spalte2) VALUES (wert1,wert2,wert3) <- 3 Werte, nur 2 Spalten.


    Versuch bitte, immer erstmal selbst die Fehler genau unter die Lupe zu nehmen, bevor Du dich ans Board wendest.


    Deinem Pastebin Code mangelt es stark an sauberer Intendation - den kann ich mir so nicht anschauen - aber ich denke mein Hinweis sollte Dir schon helfen ;).

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax

  • Hallo


    Ja, bei Pastbin, wenn der Code zu lang ist, wird er auf einer neuen Zeile fortgesetzt ;)


    Was meinst du genau mit deiner Aussage ? Liegt das Problem in der DB oder im Script selber (Spalte zuwenig erzeugt) ? Zudem, wie kann ich mir diese anderen Phänomene erklären, dass es zB gar keine Pickups mehr hat auf dem Server ?


    //Edit Randinfo
    Ich habe heute den Code in meinen GM eingebaut und hatte Probleme , sprich Errors bei split und GetPlayerID. Könnte das MySQL einen Zusammenhang mit strock und split haben, da es doch 2 Arten von Einlesen der Werte durch SQL gibt ?


    MfG dUDA

  • Die zweite Frage kann ich dir Anhand der Code Ausschnitte nicht beantworten.


    Zur ersten:


    Nochmal, das Query das die Probleme verursacht ist eine "INSERT INTO.." richtig? Dein Query ist nicht korrekt, da Du versuchst mehr Werte - als Du Spalten angegeben hast - einzufügen oder umgekehrt, mehr Spalten angegeben hast als Werte eingefügt werden sollen.


    Und jetzt nochmal mein Beispiel, wie so ein Fehler auftreten kann:



    mysql_query("INSERT INTO (spalte1,spalte2) VALUES (wert1,wert2,wert3);"); // Hier wird versucht in 2 Spalten 3 Werte einzufügen - Fehler: Failed to exeute query. Column count doesn't match value count at row 1.


    Jetzt kannst Du in deinem Script nach eben diesem Query suchen und die Anzahl der Werte/Spalten vergleichen und den Fehler beheben.

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax

  • Klar aber das ist letzten Endes dir überlassen. Manche meiner Queries gehen über 3 Zeilen, da muss ich dann schon auch mal cutten ;).


    Falls dein Query länger ist als die Bildschirmbreite dann sowieso. Wenn du jetzt aber nur ein Query mit zwei Werten hast, dann isses natürlich übertrieben ;)


    Beispiel:

    format(query,sizeof(query),"UPDATE `table` SET `value`='%d' WHERE `value`='%d';",new_value,old_value);


    Das würde ich jetzt nicht auf mehrere Zeilen verteilen ;).

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax

  • Hallo


    Das MySQL Problem scheint gelöst zu sein, jedoch habe ich noch folgende Probleme:


    -Es werden keine Pickups geladen
    -Es werden keine 3D Texte geladen
    -Die gelben Marker sind da, obwohl sie deaktiviert sind
    -Laufstyle


    All dies hat direkt mit OnGameModeInit zu tun, jedoch kommt der gesamte Code vor dem Carsystem/MySQL. Weiss jemand eine Lösung oder hat einen Tipp ?


    MfG dUDA

  • Wo ist denn der zugehörige Codeausschnitt zu finden?

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax

  • Hast geschafft, jetzt ist der Code schön deutlich ;).


    Ich hab ihn überflogen und kann Dir nicht wirklich sagen warum die Probleme auftreten. Ich nehme mal an du nutzt keine Streamer oder sonstiges für Pickups etc.


    Gibt der Compiler Fehler aus? Und bist Du Dir sicher den Server nach updaten des Scripts neugestartet zu haben?

    GameMode / Filterscript / Plugin Development via
    - PAWN / C/C++
    - Database (mySQL) & Filebased - Systems


    Webdevelopment / Interfaces Webapplications - SA:MP Server via
    - HTML & CSS
    - PHP, JavaScript, Ajax

  • Hallo


    Ich habe heute sicher Albträume vom vielen Restarten ;)
    Habe auch keine Compiller Fehler oder Warnings. Ich benutze einen MapIcon Streamer und ein Codestück, wleches jedoch im GM die Pickups für die Häuser und Bizes erstellt.
    Einen Streamer benutze ich nicht. Ich finde es echt sau (sorry) komisch, das nichts geht:


    -Keine Pickups
    -Gelbe Marker trotz Deaktivierung
    -Keine 3D Texte
    -Alle Fahrzeuge auf der Minimap sichtbar
    -Fahrzeugen mit Fahrer werden als weisses Rechteck auf der Minimap angezeigt
    //Edit: Im Ammu gibt es Bots samt Kaufmenü :wacko:
    //Edit 2: Neu kompilliert und alles neu auf den Server geladen - hat nichts geholfen


    Ich schau jetzt noch schnell, obs im Ammu Nation einen Bot hat, dann wäre etwas klar. Irgendwie pfeift der Server oder das Script auf gewisse Sachen, die unter OnGameModeInit stehen, die Objekte werden aber erstellt. Kompilliere es nachher, lade den Server neu runter.


    MfG dUDA

  • Hallo


    Das Problem liegt definitv am Carsystem, ich weiss aber nicht wo. Ich habe AddVehicle und den MySQL Code auskommentiert und die Erscheinungen passieren (Als Info: Kein Code unter OnGameModeInit).
    Weiss jemand Rat ?



    //Edit
    Mir ist heute morgen etwas aufgefallen. Ich habe ein kleines Businesssystem, welches durch LoadProperties unter OnGameModeInit aufgerufen wird und das ein split enthält, habe es unter Init mal ausgeklammert und jetzt geht es. Hat jemand eine Lösung, wie ich mit dem split umgehen muss, dait auch das LoadProperties() geht ?


    stock LoadProperties()
    {
    if(fexist("Business/BusinessInfo.txt"))
    {
    CountProperties();
    new Argument[9][70];
    new entry[256], BoughtProps;
    new File: propfile = fopen("Business/BusinessInfo.txt", io_read);
    if (propfile)
    {
    for(new id; id<PropertiesAmount; id++)
    {
    fread(propfile, entry);
    split(entry, Argument, ',');
    format(PropInfo[id][PropName], 64, "%s", Argument[0]);
    PropInfo[id][PropX] = floatstr(Argument[1]);
    PropInfo[id][PropY] = floatstr(Argument[2]);
    PropInfo[id][PropZ] = floatstr(Argument[3]);
    PropInfo[id][PropValue] = strval(Argument[4]);
    PropInfo[id][PropEarning] = strval(Argument[5]);
    format(PropInfo[id][PropOwner], MAX_PLAYER_NAME, "%s", Argument[6]);
    PropInfo[id][PropIsBought] = strval(Argument[7]);
    PropInfo[id][PropUnbuyableTime] = strval(Argument[8]);
    PropInfo[id][PickupNr] = CreatePickup(1273, 1, PropInfo[id][PropX], PropInfo[id][PropY], PropInfo[id][PropZ]);
    if(PropInfo[id][PropIsBought] == 1)
    {
    BoughtProps++;
    }
    }
    fclose(propfile);
    }
    }
    }