(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 ;