2011-09-13 31 views
3

mysqlクライアント端末からストアドプロシージャを作成しても問題ありません。 しかし、私は、私はこのエラーメッセージを取得、それを呼び出すようにしようとすると:ストアドプロシージャが存在しません

ERROR 1305(42000):PROCEDURE XXXはその後

存在しません。私は

せずに再作成しよう

DROP PROCEDURE IFは

文が存在し、私はこれを取得:

ERROR 1304(42000):PROCEDURE XXXはすでに間違って何

が存在しますか? (。)

* 問題はMYデータベースが名前のポイントを持っているということでした

* * 例: 'site.db' - >これはデータベースの間違った名前であり、MYSQLはできません手順を見つけてください! *

+1

プロシージャを呼び出すために使用される実際のコード、またはそれをドロップするために使用されるコードを示さなかったので、誰が支援するために、それは一種の難しいを作ることができます。 –

+0

「XXX」の綴りはできません。実際のコードを表示するまで私の推測です:) –

+0

SQL DeveloperやToadのようなクライアントを用意して、作成した呼び出しの後にストアドプロシージャが終了するようにしますか?ファイルのスクリプトを使用してロジックを実行しているか、SQLコマンドを直接入力していますか?これを解決する前に、いくつか詳細を述べました。スクリプトファイルを使用している場合、スキーマ所有者は同じですが、他のスキーマ所有者よりもアクセス権があります。 – gsirianni

答えて

1

不正なアップグレードやそのようなことが起こった場合、システムデータベースの一貫性に問題がある可能性があります。 あなたは、rootユーザー(またはユーザーA)を使用した可能性が
、mysqlクライアントを使用してプロシージャを定義している場合は

select * from information_schema.ROUTINES where routine_name = 'xxx' 
+0

私の質問は空です。 : –

0

の結果は何ですか。

チャンスはあなたが店のプロシージャを呼び出すために別のユーザーを使用しているされている、
みましょうは、ユーザBが、それはこのような場合は、アクセス権を付与することができます

権限のいくつかの違いが原因とすることができると言いました右
現在の特権を表示するには、このコマンドの使用

show procedure status; 
+0

私はrootユーザーのみを使用しています – Faraona

+0

@Faraonaどちらの場合にも、あなたの店舗手続きを含めてください、どこに嘘がありますか? – ajreal

関連する問題