phpMyAdmin
 sql >> Base de données >  >> Database Tools >> phpMyAdmin

Impossible d'exécuter la requête dans l'erreur de syntaxe MySQL inattendue

Problème avec ceci :

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

est que MySQL ne voit pas le point-virgule à la fin de la DROP PROCEDURE ligne d'instruction comme fin de l'instruction. C'est parce que la ligne précédente indiquait à MySQL que le terminateur de l'instruction était autre chose qu'un point-virgule. Vous avez dit à MySQL que les déclarations allaient se terminer par deux signes dollar. MySQL lit donc la DROP PROCEDURE ligne, en recherchant le terminateur de l'instruction. Et le blob entier qu'il lit n'est PAS une instruction MySQL valide, il génère une erreur de syntaxe.

Le correctif :soit déplacer la DROP PROCEDURE ligne avant le DELIMITER $$ doubler; ou terminer la DROP PROCEDURE instruction avec le délimiteur spécifié plutôt qu'un point-virgule.

Le deuxième problème que vous signalez est une erreur de syntaxe. Cela se produit parce que MySQL ne reconnaît pas IF comme début d'une instruction SQL valide.

Le IF la déclaration est valide seulement dans le contexte d'un programme stocké MySQL (par exemple, dans une CREATE PROCEDURE déclaration.)

Le correctif :utilisez un IF déclaration uniquement dans le contexte d'un programme stocké MySQL.

Le troisième problème que vous signalez est également une erreur de syntaxe. Cela se produit parce que vous n'avez pas de syntaxe valide pour un SET déclaration; Syntaxe MySQL pour SET l'instruction pour attribuer une valeur à la variable utilisateur est :

SET @uservar = expr 

MySQL attend une expression après le signe égal. MySQL n'est pas attend une instruction SQL.

Pour affecter une valeur à une variable utilisateur comme résultat d'un SELECT , effectuez l'affectation dans l'instruction SELECT, par exemple :

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

Notez que l'opérateur d'affectation à l'intérieur du SELECT l'instruction est := (deux-points égal), pas seulement = .