Du hast einen Fehler in deiner SQL-Syntax
Ein Script hat der Datenbank eine Anfrage geschickt, die sie nicht verstehen konnte.
Mach das zuerst
Das ist ein Fehler im Script. Meld ihn dem Autor, mit dieser Zeile.
Was es bedeutet
MySQL hat die Anweisung abgelehnt. Die Meldung zitiert den Text ab der Stelle, an der es aufgab — das ist der nützlichste Teil: Was auch immer zitiert wird, das Problem sitzt dort oder direkt davor.
Was es auslöst
Sortiert danach, wie oft es die Antwort ist.
- 1
Stringverkettung statt Parametern
SQL mit
..und einem Wert bauen, der ein Anführungszeichen enthält. Das ist zugleich eine SQL-Injection-Lücke — es zu beheben lohnt aus zwei Gründen. - 2
Ein reserviertes Wort als Spaltenname
rank,groups,key,order,read. MySQL 8 hatrankzu den reservierten Wörtern genommen, was über Nacht viele alte FiveM-Schemata zerlegte. - 3
Ein Komma zu viel am Ende
SELECT a, b, FROM users— meist das, was nach dem Löschen einer Spalte aus der Liste übrig bleibt. - 4
Die Anzahl der Platzhalter passt nicht
Mehr
?als Werte, oder ein benannter Parameter, der nie geliefert wurde. Manche Treiber melden das als Syntax- statt als Bindungsfehler. - 5
Mehrere Anweisungen in einer Abfrage
oxmysql führt zwei durch
;getrennte Anweisungen nicht in einem Aufruf aus, außer der Treiber ist dafür konfiguriert.
Wie du erkennst, welcher deiner ist
Lies das zitierte Fragment im Fehler. Gib dann das fertige SQL aus und führ es von Hand in einem MySQL-Client aus: Scheitert es dort genauso, ist es die Anweisung; klappt es, sind es die Parameter.
Wo du nachsehen musst
Der Abfragestring in der Resource und die gebundenen Werte.
Wie du es behebst
Nimm immer Platzhalter. Das löst das Syntax- und das Injection-Problem auf einen Schlag:
-- falsch
MySQL.query('SELECT * FROM users WHERE name = "' .. name .. '"')
-- richtig
MySQL.query('SELECT * FROM users WHERE name = ?', { name })Und setz reservierte Wörter in Backticks:
SELECT `rank` FROM users WHERE identifier = ?
Hängst du immer noch an deinem eigenen Code?
Diese Seite sagt, was dieser Fehler üblicherweise bedeutet. Füg deine Konsole in Server Fixer ein: es sortiert alles darin und sagt dir, was zuerst dran ist; und wenn du lieber nicht ranwillst, kann ORBIE das Script reparieren und dir die Resource fertig zum Einsetzen zurückgeben.
bug_reportServer Fixer öffnenFür diese Art Fehler Script Optimizer erkennt die Abfragemuster, die das verursachen.