sql >> Database >  >> RDS >> Mysql

FOUT 1064 (42000) in MySQL

(Voor degenen die via een zoekmachine op deze vraag komen), controleer of uw opgeslagen procedures een aangepast scheidingsteken aangeven, want dit is de fout die u zou kunnen zien wanneer de engine er niet achter kan komen hoe een instructie moet worden beëindigd:

Als je een databasedump hebt en zie:

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;

Probeer in te pakken met een aangepaste 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. Categoriehiërarchie (PHP/MySQL)

  2. Je eigen TinyURL maken

  3. Een kolom verwijderen uit een tabel in MySQL

  4. Queryresultaten retourneren in een vooraf gedefinieerde volgorde