sql >> Base de Datos >  >> RDS >> Mysql

ERROR 1064 (42000) en MySQL

(Para aquellos que llegan a esta pregunta desde un motor de búsqueda), verifique que sus procedimientos almacenados declaren un delimitador personalizado, ya que este es el error que puede ver cuando el motor no puede descubrir cómo terminar una declaración:

Si tiene un volcado de base de datos y ve:

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;

Intenta envolver con un DELIMITER personalizado :

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 ;