対応方法:ERROR 1304 (42000): PROCEDURE プロシージャ名 already exists
スポンサードリンク
プロシージャを作成しようとした際にこのエラーが出る場合、CREATE PROCEDURE で指定したプロシージャ名と同じ名前のプロシージャがすでに存在しています。
もし作成するプロシージャの名前に誤りがなく、プロシージャを作成するデータベースも正しい場合、新しいストアドプロシージャを作成する前に、既存のストアドプロシージャを削除する必要があります。(プロシージャ名やデータベースが間違っている場合はそちらを修正してください。)
既存のプロシージャを削除するには DROP PROCEDURE プロシージャ名 を使用します。対応例は次の通りです。
mysql> DELIMITER // mysql> CREATE PROCEDURE testproc2(INOUT prmInOut INT) -> BEGIN -> SET prmInOut = prmInOut + 1234; -> END -> // ERROR 1304 (42000): PROCEDURE testproc2 already exists ← エラー発生 mysql> DELIMITER ; mysql> DROP PROCEDURE testproc2; ← 既存のプロシージャを削除 Query OK, 0 rows affected (0.00 sec) mysql> DELIMITER // mysql> CREATE PROCEDURE testproc2(INOUT prmInOut INT) -> BEGIN -> SET prmInOut = prmInOut + 1234; -> END -> // Query OK, 0 rows affected (0.00 sec) ← 作成成功 mysql> DELIMITER ; mysql>
事前に同じ名前のストアドプロシージャが登録されていないかを確認する方法については、次の関連ページを参照してください。
スポンサードリンク