web-dev-qa-db-fra.com

Comment puis-je corriger l'erreur MySQL # 1064?

Lorsque j'émets une commande vers MySQL, l'erreur "#1064" (Erreur de syntaxe) est générée.

  1. Qu'est-ce que ça veut dire?

  2. Comment puis-je le réparer?

59
eggyal

Dans mon cas, j’essayais d’exécuter du code de procédure dans MySQL et, en raison d’un problème avec le serveur dans lequel le serveur ne peut pas trouver où mettre fin à la requête, le code d’erreur 1064 s’est écoulé. cela a bien fonctionné.

Par exemple, avant c'était:

DROP PROCEDURE IF EXISTS getStats;
CREATE PROCEDURE `getStats` (param_id INT, param_offset INT, param_startDate datetime, param_endDate datetime)
BEGIN
    /*Procedure Code Here*/
END;

Après avoir mis DELIMITER, c'était comme ça:

DROP PROCEDURE IF EXISTS getStats;
DELIMITER $$
CREATE PROCEDURE `getStats` (param_id INT, param_offset INT, param_startDate datetime, param_endDate datetime)
BEGIN
    /*Procedure Code Here*/
END;
$$
DELIMITER ;
1
Umair Malhi

Si vous recevez l'erreur avec SQuirreL Client lors de l'exécution d'une expression SQL avec un point-virgule tel que CREATE PROCEDURE, vous avez besoin du plug-in MySQL. Vous pouvez le sélectionner lors de l'installation. Il n'est pas sélectionné par défaut.

0
Horcrux7

Vous obtenez également cette erreur lorsque vous essayez d'insérer du JSON ou d'autres données avec des caractères spéciaux, sans les guillemets nécessaires, par exemple:

UPDATE myTable SET myJSONfield = {};

changez le en 

UPDATE myTable SET myJSONfield = '{}';
0
Andrew

C'est peut-être parce que votre chaîne ou les données insérées contiennent un guillemet simple 'vous pouvez essayer 

mysql_real_escape_string() for mysql or mysqli_real_escape_string() for mysqli

fonction permettant d’échapper la chaîne lors de l’insertion de données (requête d’insertion) dans la base de données.

0
Hussnain sheikh

Diverses raisons pour cela .. par exemple, par exemple. si nous déclarons une variable, elle devrait être placée avant tout autre type d’instruction. ou bien nous devons mettre un bloc BEGIN avant cela.

DECLARE _RoomID INTEGER ;

    SET _dtTodayTmp=NOW();
    SET _dtToday=DATE_FORMAT(_dtTodayTmp,"%m/%d/%y");
    SET _tmNow=DATE_FORMAT(_dtTodayTmp,"%h:%i:%s");

    DECLARE tree_cursor1 CURSOR 
    FOR SELECT roomid FROM reservationDet rd WHERE rd.status=3 AND rd.compcode=pCompCode; 

donne une erreur donc nous devons le faire 

DECLARE _RoomID INTEGER ;
    SET _dtTodayTmp=NOW();
    SET _dtToday=DATE_FORMAT(_dtTodayTmp,"%m/%d/%y");
    SET _tmNow=DATE_FORMAT(_dtTodayTmp,"%h:%i:%s"); 

    **BEGIN**
        DECLARE tree_cursor1 CURSOR
        FOR SELECT roomid FROM reservationDet WHERE STATUS = 3 AND compcode = pCompCode ; 
0
user5493732