Tenés un error en la sintaxis de tu SQL
Un script le mandó a la base de datos una petición que no pudo entender.
Haz esto primero
Es un fallo del script. Repórtaselo a quien lo escribió, con esta línea.
Qué significa
MySQL rechazó la sentencia. El mensaje cita el texto a partir del punto donde se dio por vencido, que es la parte más útil de todas: sea lo que sea lo que cita, el problema está ahí o justo antes.
Qué lo provoca
Ordenado por la frecuencia con la que es la respuesta.
- 1
Interpolación de cadenas en vez de parámetros
Armar SQL con
..y un valor que trae una comilla. Esto además es un agujero de inyección SQL, así que vale la pena arreglarlo por dos motivos. - 2
Una palabra reservada usada como nombre de columna
rank,groups,key,order,read. MySQL 8 añadiórankcomo palabra reservada, y eso rompió de la noche a la mañana un montón de esquemas viejos de FiveM. - 3
Una coma de más al final
SELECT a, b, FROM users— normalmente lo que queda después de borrar una columna de la lista. - 4
La cantidad de marcadores no coincide
Más
?que valores, o un parámetro con nombre que nunca se pasó. Algunos controladores lo reportan como error de sintaxis en vez de error de enlace. - 5
Varias sentencias en una sola consulta
oxmysql no ejecuta dos sentencias separadas por
;en una llamada salvo que el controlador esté configurado para eso.
Cómo saber cuál es el tuyo
Leé el fragmento citado en el error. Después imprimí el SQL final y ejecutalo a mano en un cliente de MySQL: si ahí falla igual, es la sentencia; si funciona, son los parámetros.
Dónde mirar
La cadena de la consulta en el recurso, y los valores que se enlazan.
Cómo arreglarlo
Usá siempre marcadores de posición. Arregla el problema de sintaxis y el de inyección a la vez:
-- mal
MySQL.query('SELECT * FROM users WHERE name = "' .. name .. '"')
-- bien
MySQL.query('SELECT * FROM users WHERE name = ?', { name })Y poné entre acentos graves las palabras reservadas:
SELECT `rank` FROM users WHERE identifier = ?
¿Sigues atascado en tu propio código?
Esta página es lo que suele significar este error. Pega tu consola en Server Fixer y ordenará todo lo que haya en ella y te dirá qué hacer primero; y si prefieres no tocarlo, ORBIE puede reparar el script y devolverte el recurso listo para soltar.
bug_reportAbrir el Server FixerPara este tipo de error, el Script Optimizer detecta los patrones de consulta que causan esto.