Mysql
 sql >> Database >  >> RDS >> Mysql

ERRORE 1064 (42000) in MySQL

(Per coloro che arrivano a questa domanda da un motore di ricerca), controlla che le tue stored procedure dichiarino un delimitatore personalizzato, poiché questo è l'errore che potresti visualizzare quando il motore non riesce a capire come terminare un'istruzione:

Se hai un dump del database e vedi:

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;

Prova a eseguire il wrapping con un DELIMITER personalizzato :

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 ;