Vous avez une erreur dans la syntaxe de votre SQL
Un script a envoyé à la base une requête qu'elle n'a pas pu comprendre.
Faites d'abord ceci
C'est une erreur du script. Signalez-la à son auteur, avec cette ligne.
Ce que ça veut dire
MySQL a rejeté l'instruction. Le message cite le texte à partir de l'endroit où il a abandonné, et c'est la partie la plus utile : quel que soit le fragment cité, le problème est à cet endroit ou juste avant.
Ce qui la provoque
Classé par fréquence : la cause la plus probable en premier.
- 1
De l'interpolation de chaînes au lieu de paramètres
Construire du SQL avec
..et une valeur contenant une apostrophe. C'est aussi une faille d'injection SQL : cela vaut la peine d'être corrigé pour deux raisons. - 2
Un mot réservé utilisé comme nom de colonne
rank,groups,key,order,read. MySQL 8 a ajoutérankaux mots réservés, ce qui a cassé du jour au lendemain beaucoup d'anciens schémas FiveM. - 3
Une virgule en trop à la fin
SELECT a, b, FROM users— en général ce qui reste après avoir supprimé une colonne de la liste. - 4
Le nombre de paramètres ne correspond pas
Plus de
?que de valeurs, ou un paramètre nommé jamais fourni. Certains pilotes le rapportent comme une erreur de syntaxe plutôt que de liaison. - 5
Plusieurs instructions dans une seule requête
oxmysql n'exécute pas deux instructions séparées par
;dans un même appel, sauf si le pilote est configuré pour.
Comment savoir laquelle est la vôtre
Lisez le fragment cité dans l'erreur. Puis affichez le SQL final et exécutez-le à la main dans un client MySQL : s'il échoue de la même façon, c'est l'instruction ; s'il réussit, ce sont les paramètres.
Où regarder
La chaîne de requête dans la ressource, et les valeurs liées.
Comment la corriger
Utilisez toujours des paramètres. Cela règle le problème de syntaxe et celui d'injection en même temps :
-- faux
MySQL.query('SELECT * FROM users WHERE name = "' .. name .. '"')
-- correct
MySQL.query('SELECT * FROM users WHERE name = ?', { name })Et encadrez les mots réservés par des accents graves :
SELECT `rank` FROM users WHERE identifier = ?
Toujours bloqué sur votre propre code ?
Cette page explique ce que cette erreur signifie en général. Collez votre console dans Server Fixer : il classera tout ce qui s'y trouve et vous dira quoi faire en premier ; et si vous préférez ne pas y toucher, ORBIE peut réparer le script et vous rendre la ressource prête à déposer.
bug_reportOuvrir le Server FixerPour ce type d'erreur, le Script Optimizer repère les motifs de requête à l'origine de ceci.