(Für diejenigen, die von einer Suchmaschine zu dieser Frage kommen), überprüfen Sie, ob Ihre gespeicherten Prozeduren ein benutzerdefiniertes Trennzeichen deklarieren, da dies der Fehler ist, den Sie möglicherweise sehen, wenn die Suchmaschine nicht herausfinden kann, wie eine Anweisung beendet werden soll:
Wenn Sie einen Datenbank-Dump haben und sehen:
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;
Versuchen Sie es mit einem benutzerdefinierten 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 ;