(для тех, кто приходит на этот вопрос из поисковой системы), убедитесь, что ваши хранимые процедуры объявляют пользовательский разделитель, так как это ошибка, которую вы можете увидеть, когда механизм не может понять, как завершить оператор:
ОШИБКА 1064 (42000) в строке 3: у вас ошибка в синтаксисе SQL;
проверьте руководство, которое соответствует вашей версии сервера MySQL для
правильный синтаксис для использования рядом с '' в строке ...
Если у вас есть дамп базы данных и вы видите:
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;
Попробуйте обернуть с пользовательским DELIMITER
:
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 ;