我在 Fedora 上使用 MySQL 5.5.31,但我无法删除不存在的过程。使用 root 用户:
- 创建一个新的数据库:test
- 创建一个新用户: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'
为什么“如果存在”不起作用?
如果我对 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)