web-dev-qa-db-ja.com

MySQLエラー:SQL構文にエラーがあります。近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください

次のようなストアドプロシージャがあります。

CREATE PROCEDURE ProG()
  BEGIN
    SELECT * FROM `hs_hr_employee_leave_quota`;
  END

しかし、それはエラーを与えます:

#1064-SQL構文にエラーがあります。行3で ''の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

エラーはどういう意味ですか?行番号2の何が問題になっていますか?

28
Gnanendra

トリガー、ストアドプロシージャなどを使用する前に、区切り文字を変更する必要があります。

delimiter //
create procedure ProG() 
begin 
SELECT * FROM hs_hr_employee_leave_quota;
end;//
delimiter ;
53
Nicola Cossu

このMySQLエラーが何を言おうとしているかを調べる方法

_#1064 - You have an error in your SQL syntax;
_

このエラーには手がかりがありません。間違いがどこにあるかを確認するには、これらすべての項目を再確認する必要があります。

  1. !@#$%^&*()-_=+[]{}\|;:'",<>/?を省略したか、不要なシンボルを含めました。
  2. 誤った、欠落した、または不必要なキーワード:selectinto、または他の無数のキーワード。
  3. クエリでASCII文字のように見えるが認識されないUnicode文字があります。
  4. キーワード間のスペースの紛失、欠落、不要な空白または改行。
  5. 一致しない一重引用符、二重引用符、括弧または中括弧。

壊れたクエリが機能し始めるまで、できる限り削除します。そして、次回、健全な構文報告システムを持つPostgreSQLを使用します。

13
Eric Leschinski

区切り記号、区切り記号...

プロシージャに複数のステートメントがある場合、本当に必要です。 (つまり、;あなたのコードで、さらにステートメント/コマンドですか?次に、区切り文字を使用する必要があります)。

あなたのような単純なrpocedureの場合は、次のようにできます。

CREATE PROCEDURE ProG()
  SELECT * FROM `hs_hr_employee_leave_quota`;
5
ypercubeᵀᴹ

これはmysqlのメモリの問題である可能性があり、my.iniのmax_allowed_pa​​cketを増やしてみてください。

0
sherin.k