Mysql
 sql >> Base de données >  >> RDS >> Mysql

ERREUR 1064 (42000) dans MySQL

(Pour ceux qui viennent à cette question à partir d'un moteur de recherche), vérifiez que vos procédures stockées déclarent un délimiteur personnalisé, car il s'agit de l'erreur que vous pourriez voir lorsque le moteur ne peut pas comprendre comment terminer une instruction :

Si vous avez un vidage de base de données et que vous voyez :

DROP PROCEDURE IF EXISTS prc_test;
CREATE PROCEDURE prc_test( test varchar(50))
BEGIN
    SET @sqlstr = CONCAT_WS(' ', 'CREATE DATABASE',  test, 'CHARACTER SET utf8 COLLATE utf8_general_ci');
    SELECT @sqlstr;
    PREPARE stmt FROM @sqlstr;
    EXECUTE stmt;
END;

Essayez d'envelopper avec un DELIMITER personnalisé :

DROP PROCEDURE IF EXISTS prc_test;
DELIMITER $$
CREATE PROCEDURE prc_test( test varchar(50))
BEGIN
    SET @sqlstr = CONCAT_WS(' ', 'CREATE DATABASE',  test, 'CHARACTER SET utf8 COLLATE utf8_general_ci');
    SELECT @sqlstr;
    PREPARE stmt FROM @sqlstr;
    EXECUTE stmt;
END;
$$
DELIMITER ;