Fedora で MySQL 5.5.31 を使用していますが、存在しないプロシージャを削除するのに問題があります。root ユーザーの場合:
- 新しいデータベースを作成します: テスト
- 新しいユーザーを作成します: テスト
データベース test のユーザー test にすべての権限を付与します
GRANT ALL PRIVILEGES ON test.* TO 'test'@'%' WITH GRANT OPTION;
ユーザーテストあり
CREATE PROCEDURE test.foo() SELECT NOW(); DROP PROCEDURE IF EXISTS test.foo; Query OK, 0 rows affected (0.00 sec) DROP PROCEDURE IF EXISTS test.foo; ERROR 1370 (42000): alter routine command denied to user 'test'@'localhost' for routine 'test.foo'
「IF EXISTS」が機能しないのはなぜですか?
root ユーザーで同じことを行うと、すべて正常に動作します (警告が表示されますが、問題ありません)。
ユーザーテストあり
CREATE PROCEDURE test.foo() SELECT NOW(); DROP PROCEDURE IF EXISTS test.foo; Query OK, 0 rows affected (0.00 sec) DROP PROCEDURE IF EXISTS test.foo; Query OK, 0 rows affected, 1 warning (0.00 sec)