MySQl Biz Load System Fehler mit der Cache | MySQL R41-4

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 Brotfische,


    ich hoffe ihr könnt' mir helfen.


    Ich habe ein Biz Lade-System geschrieben, aber es funktioniert nicht, für mich eine unerklärliche problematik.
    Die erste Biz wird vollständig geladen. aber alle anderen nicht, es kommt mir so vor als wird die Cache nach der ersten Biz gelöscht.


    Code
    new query[103];
    	mysql_format(g_SQL, query, sizeof query, "SELECT * FROM `bizzes`");
    	mysql_tquery(g_SQL, query, "OnLoadBusiness");





    Hier wird alles korrekt ausgegeben, cache_num_cows() gibt 18 zurück da 18 Bizzen in der DB existieren.

    printf("DEBUG: cache_num_results() = %i, cache_num_cows() = %i, cache_num_fields() = %i", cache_num_results(), cache_num_rows(), cache_num_fields());


    Wenn die erste Biz geladen ist, gibt komischerweise cache_num_rows() plötzlich 0 zurück. Und dadurch können keine weiteren Einträge geladen werden.

    printf("[BIZ] %s (%i/%i) geladen.", BizInfo[i][bName], i+1, cache_num_rows());


    Und in der MySQL-Log steht:


    Code: mysql.log
    [09:20:42] [ERROR] cache_get_value_name: field 'name' not found
    [09:20:42] [ERROR] cache_get_value_name: field 'name' not found
    [09:20:42] [ERROR] cache_get_row_count: no active cache
    [09:20:42] [ERROR] cache_get_row_count: no active cache


    Wo ist der Fehler: :/

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • cache_get_value_name: field 'name' not found

    Das sagt aus, dass es in deiner Tabelle keine Spalte mit dem Namen "name" gibt :)


    Deshalb kann BizInfo[i][bName] nicht geladen werden.


    Das mit dem cache_get_row_count: no active cache kommt ja erst später.


    Kann es ventuell sein, dass es sich da gar um eine andere Funktion handelt oder dass du das einfach so irgendwo im Code plötzlich verwendest, wo es gar keinen Cache gibt?!


    Das würde das dann erklären ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Kaliber, danke für deine schnelle Unterstützung. Die Variable bName verwende ich aktuell nur beim Load-System der Biz.


    Die Spalte "Name" existiert in der Tabelle "bizzes": https://gyazo.com/eb94153bc1144dbd0740b127d6236b47


    Das ist sehr komisch.....

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • Bist du sicher, dass das von dem Code kommt?
    Wenn nämlich cache_num_rows 0 zurück gibt, dann kann eigentlich nicht zwei mal versucht werden, den Name auszulesen, da die Schleife gar nicht ausgeführt werden könnte.


    Kannst du die prints bitte mal posten?

  • Code
    [09:20:42] [MAPS] Einrichtung des Detektivbüros geladen.
    [09:20:42] [SERVER] Der globale Chat wurde aktiviert.
    [09:20:42] [SERVER] Der Neulingschat wurde aktiviert.
    [09:20:42] ############################################
    [09:20:42] ############# VORTEX REALLIFE ##############
    [09:20:42] ############ Scriptet by palwal ############
    [09:20:42] ############################################
    [09:20:42] Number of vehicle models: 3
    [09:20:42] DEBUG: cache_num_results() = 1, cache_num_cows() = 18, cache_num_fields() = 22
    [09:20:42] [BIZ] Autohaus Cappy (1/0) geladen.

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • Den habe ich in den Log entfernt. DEBUGTEST wird einmal ausgeführt.


    Hier nochmal vollständige Prints

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • Tatsächlich! Wenn ich den Inhalt in getUserByID auskommentiere, dann funktioniert es und alle Bizzen werden geladen.


    Diese Funktion soll die User aus der Datenbank per ID finden und den Spielernamen zurückgeben...

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • Die simpelste Variante, ohne viel umzubauen wäre, den Teil der diese Funktion nutzt, nach der ersten Schleife, die den Cache nutzt, auszuführen, in einer zweiten Schleife.
    Dann hast du kein Problem, dass sich der Cache überschneidet oder löscht.


    Sprich, in der ersten Schleife lädst du alles und in der zweiten Schleife erstellst du die Labels etc.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Machst du mir ein BeispieL?


    Im übringen, ich weiß selbst nicht ob die getUserByID korrekt ist, weil bei dem Autohaus, das geladen wird, habe ich einen Inhaber und einen Teilhaber eingetragen (Die id'n der Payer in der DB), allerdings wird nicht der name oder sonst was angezeigt.

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

    Einmal editiert, zuletzt von palwal () aus folgendem Grund: Problem gelöst bzgl Funktion getUserByID auslesen

  • Versuche es bitte selbst, einfach in der ersten Schleife den Cache laden und in der zweiten Schleife die Labels etc erstellen. Vor der ersten Schleife liest du die Anzahl der rows aus, damit du die Durchlauf Anzahl kennst. Mehr ist es nicht, nur dass du den Code in zwei Teile trennst.


    Zur Funktion: Könnte es sein, dass die Tabelle players keine Spalte "name" hat und daher der Fehler im Log kommt? Wäre eine Vermutung.

  • Ich hab die stock so gelassen, habe nach dem Auslesen der Bizzen einen Timer erstellt, der nach 10 Sekunden die Labels erstellt. Und nun funktioniert beides :D Warum müssen Cachen so verwirrend sein^^ Danke für deine Hilfe

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • Als MySQL Datenbank Entwickler und auch Anwender, kann ich dir eines mit Gewissheit sagen. Gewisse MySQL Versionen achten verdammt genau auf die Groß -Kleinschreibung. Prüfe also nochmal alle deine Tabellen und auch den Code dazu.