sql >> データベース >  >> RDS >> Mysql

MySQLのエラー1064(42000)

    (検索エンジンからこの質問に来る人のために)、ストアドプロシージャがカスタム区切り文字を宣言していることを確認してください。これは、エンジンがステートメントを終了する方法を理解できないときに表示される可能性のあるエラーです。

    データベースダンプがあり、次を参照している場合:

    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;
    

    カスタムの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. mysqlのテーブルから重複する行を削除する方法

    2. MacでMySQLWorkbenchに接続できません。 '127.0.0.1'(61)MacMacintoshでMySQLサーバーに接続できません

    3. 配列をSQLServerストアドプロシージャに渡す方法

    4. MySQLのWHERE列=での疑問符の重要性は何ですか?