phpMyAdmin
 sql >> Base de Dados >  >> Database Tools >> phpMyAdmin

Não é possível executar a consulta no erro de sintaxe do MySQL inesperado


Problema com isso:
DELIMITER $$
DROP PROCEDURE IF EXISTS my_test;
CREATE PROCEDURE my_test() ...

é que o MySQL não está vendo o ponto e vírgula no final do DROP PROCEDURE linha de instrução como o final da instrução. Isso ocorre porque a linha anterior disse ao MySQL que o terminador de instrução era algo diferente de um ponto e vírgula. Você disse ao MySQL que as instruções seriam encerradas com dois cifrões. Então o MySQL está lendo o DROP PROCEDURE linha, procurando o terminador de instrução. E todo o blob que ele lê NÃO é uma instrução MySQL válida, gera um erro de sintaxe.

A correção:mova o DROP PROCEDURE linha antes o DELIMITER $$ linha; ou encerrar o DROP PROCEDURE instrução com o delimitador especificado em vez de um ponto e vírgula.

O segundo problema que você relata é um erro de sintaxe. Isso está ocorrendo porque o MySQL não reconhece IF como o início de uma instrução SQL válida.

O IF declaração é válida somente dentro do contexto de um programa armazenado MySQL (por exemplo, dentro de um CREATE PROCEDURE demonstração.)

A correção:use um IF instrução somente dentro do contexto de um programa armazenado MySQL.

O terceiro problema que você relata também é um erro de sintaxe. Isso está ocorrendo porque você não tem uma sintaxe válida para um SET demonstração; Sintaxe do MySQL para SET instrução para atribuir um valor à variável do usuário é:
SET @uservar = expr 

O MySQL está esperando uma expressão após o sinal de igual. MySQL não esperando uma instrução SQL.

Para atribuir um valor a uma variável de usuário como resultado de um SELECT instrução, faça a atribuição dentro da instrução SELECT, por exemplo:
SELECT @Count := Count(id) FROM `tbl_object_users` WHERE `username`='jp2code'

Observe que o operador de atribuição dentro do SELECT declaração é := (dois pontos iguais), não apenas = .