sql >> Base de Datos >  >> Database Tools >> phpMyAdmin

No se puede ejecutar la consulta en un error de sintaxis de MySQL inesperado

Problema con esto:

DELIMITER $$
DROP PROCEDURE IF EXISTS my_test;
CREATE PROCEDURE my_test() ...

es que MySQL no ve el punto y coma al final del DROP PROCEDURE línea de declaración como el final de la declaración. Esto se debe a que la línea anterior le dijo a MySQL que el terminador de la declaración era algo más que un punto y coma. Le dijiste a MySQL que las declaraciones terminarían con dos signos de dólar. Entonces MySQL está leyendo el DROP PROCEDURE línea, buscando el terminador de declaración. Y todo el blob que lee NO es una instrucción MySQL válida, genera un error de sintaxis.

La solución:mueva el DROP PROCEDURE línea antes el DELIMITER $$ línea; o finalizar el DROP PROCEDURE instrucción con el delimitador especificado en lugar de un punto y coma.

El segundo problema que informa es un error de sintaxis. Eso ocurre porque MySQL no reconoce IF como el comienzo de una instrucción SQL válida.

El IF declaración es válida solamente dentro del contexto de un programa almacenado MySQL (por ejemplo, dentro de un CREATE PROCEDURE declaración.)

La solución:use un IF instrucción solo dentro del contexto de un programa almacenado de MySQL.

El tercer problema que informa también es un error de sintaxis. Eso ocurre porque no tiene una sintaxis válida para un SET declaración; Sintaxis MySQL para SET declaración para asignar un valor a la variable de usuario es:

SET @uservar = expr 

MySQL espera una expresión después del signo igual. MySQL no esperando una sentencia SQL.

Para asignar un valor a una variable de usuario como resultado de un SELECT instrucción, haga la asignación dentro de la instrucción SELECT, por ejemplo:

SELECT @Count := Count(id) FROM `tbl_object_users` WHERE `username`='jp2code'

Tenga en cuenta que el operador de asignación dentro de SELECT declaración es := (dos puntos equivalen), no solo = .