THE ORB
Iniciando o studio

Você tem um erro na sintaxe do seu SQL

Um script mandou para o banco um pedido que ele não conseguiu entender.

groupsAquela função para de funcionarcodePrecisa de um desenvolvedor

Faça isto primeiro

É um erro do script. Reporte para quem escreveu, com esta linha.

bug_reportMelhor colar o console inteiro

O que significa

O MySQL recusou a instrução. A mensagem cita o texto a partir do ponto em que ele desistiu, que é a parte mais útil de todas: seja lá o que for citado, o problema está ali ou logo antes.

O que causa isso

Ordenado pela frequência com que é a resposta.

  1. 1

    Interpolação de strings em vez de parâmetros

    Montar SQL com .. e um valor que traz uma aspa. Isso também é um buraco de injeção de SQL, então vale a pena consertar por dois motivos.

  2. 2

    Uma palavra reservada usada como nome de coluna

    rank, groups, key, order, read. O MySQL 8 adicionou rank como palavra reservada, e isso quebrou da noite para o dia um monte de esquemas antigos de FiveM.

  3. 3

    Uma vírgula sobrando no fim

    SELECT a, b, FROM users — normalmente o que sobra depois de apagar uma coluna da lista.

  4. 4

    A quantidade de marcadores não bate

    Mais ? do que valores, ou um parâmetro nomeado que nunca foi passado. Alguns drivers reportam isso como erro de sintaxe em vez de erro de vinculação.

  5. 5

    Várias instruções numa única consulta

    O oxmysql não executa duas instruções separadas por ; numa chamada a não ser que o driver esteja configurado para isso.

Como saber qual é o seu

Leia o trecho citado no erro. Depois imprima o SQL final e execute na mão num cliente MySQL: se falhar igual lá, é a instrução; se funcionar, são os parâmetros.

Onde olhar

A string da consulta no resource, e os valores que são vinculados.

Como consertar

Use sempre marcadores de posição. Resolve o problema de sintaxe e o de injeção ao mesmo tempo:

-- errado
MySQL.query('SELECT * FROM users WHERE name = "' .. name .. '"')

-- certo
MySQL.query('SELECT * FROM users WHERE name = ?', { name })

E coloque as palavras reservadas entre crases:

SELECT `rank` FROM users WHERE identifier = ?

Ainda travado no seu próprio código?

Esta página é o que esse erro costuma significar. Cole o seu console no Server Fixer e ele vai ordenar tudo o que estiver lá e te dizer o que fazer primeiro; e se você preferir não mexer, o ORBIE consegue consertar o script e te devolver o resource pronto para soltar.

bug_reportAbrir o Server Fixer

Para esse tipo de erro, o Script Optimizer detecta os padrões de consulta que causam isso.

Erros que andam junto com este