sql >> Databasteknik >  >> RDS >> Mysql

FEL 1064 (42000) i MySQL

(För de som kommer till den här frågan från en sökmotor), kontrollera att dina lagrade procedurer deklarerar en anpassad avgränsare, eftersom detta är felet som du kan se när motorn inte kan ta reda på hur man avslutar ett uttalande:

Om du har en databas dump och se:

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;

Försök att slå in med en anpassad 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 ;


  1. DateTime2 vs DateTime i SQL Server

  2. MySql - PÅ DUBLIKATNYCKELINSTÄLLNING

  3. Hur man tvingar PHP att läsa nya rader och returer som

  4. Hur man byter ut en sträng i en SQL Server-tabellkolumn