Erro 1064 You have an error in your SQL syntax: como encontrar a linha

O 1064 é a base de dados a dizer que não percebeu a instrução SQL: está escrita de uma forma que ela não aceita. A mensagem acaba sempre com um recado do género ... right syntax to use near 'FROM pedidos' at line 3. A regra de ouro é esta: o defeito está imediatamente antes do pedaço citado, não nele.

As causas que se repetem

O que se vê A causa e a cura
Uma coluna chamada order, group, key ou desc São palavras reservadas do SQL. Ponha o nome entre acentos graves: `order`. Ou mude o nome da coluna.
Texto com apóstrofo (O’Brien, d’água) O apóstrofo fecha a cadeia de texto a meio. A cura não é “escapar” à mão: é usar consultas preparadas (parâmetros), que também fecham a porta à injecção de SQL.
Vírgula a mais antes de FROM ou no fim da lista Uma vírgula depois do último campo. Conte-as.
Variável vazia: WHERE id = sem valor O código montou a consulta com uma variável vazia. Escreva a consulta no registo antes de a executar e veja o que realmente foi enviado.
Falha na importação, at line 12874 O número é a linha do ficheiro. Abra-o no editor e vá a essa linha: é frequente o ficheiro estar cortado a meio (envio interrompido).
Funciona noutro servidor, aqui não Sintaxe de uma versão diferente. Aqui corre MariaDB, não o MySQL da Oracle. Veja MySQL ou MariaDB: qual corre aqui.

Encontrar a linha, passo a passo

1 Leia a mensagem até ao fim e copie o pedaço entre aspas depois de near. Procure o defeito logo antes dele.
2 Se vem de uma importação, anote o número da linha, abra o ficheiro num editor com números de linha e vá lá. Se o ficheiro termina a meio de uma instrução, volte a exportá-lo ou volte a enviá-lo.
3 Se vem do código, escreva a consulta completa no registo (log) antes de a executar e cole-a no separador SQL do phpMyAdmin. Ele sublinha onde falha. Onde ver o registo: onde está o registo de erros do PHP.
4 Teste por partes. Tire a cláusula suspeita, corra, e volte a pô-la. Em três tentativas costuma aparecer.
5 Se for um plugin do WordPress a dar o erro, desligue o plugin que apareceu na mensagem e confirme que o site volta. Veja erros comuns do WordPress.
Não monte consultas juntando texto de formulários. Além do 1064 que aparece com um apóstrofo, é assim que se abre a porta à injecção de SQL, uma das falhas de segurança mais antigas e mais exploradas. Use parâmetros: um exemplo a funcionar está em ligar ao MySQL a partir do PHP: mysqli e PDO.
Uma nota sobre versões. Há instruções que só existem num dos dois motores. Por exemplo, ADD COLUMN IF NOT EXISTS existe no MariaDB e não no MySQL da Oracle. Se uma instrução funciona numa máquina e rebenta noutra, veja primeiro que motor e que versão cada uma corre.

Não encontra a linha? Mande-nos a mensagem completa e, se for uma importação, o número da linha.

Abrir um pedido de suporte

VEJA TAMBÉM

Ligar ao MySQL a partir do PHP: mysqli e PDO, com um exemplo

MySQL ou MariaDB: qual corre aqui e se isso importa

Importar com o phpMyAdmin, e o limite de tamanho que o trava

Onde está o registo de erros do PHP

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?