Я использую MySQL 5.5.31 в Fedora, и у меня есть проблема с отказом от существующей процедуры. С суперпользователя:Отбросить несуществующую процедуру в MySQL
- Создать новую базу данных: тест
- Создание нового пользователя: тест
Дайте все разрешения для тестирования пользователя для тестирования базы данных
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» не работает?
Если бы я сделать то же самое с суперпользователя все работает отлично (с предупреждением, но это нормально):
С тест пользователя
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)
Спасибо за ваш ответ, я полностью пропустил эту часть: вам нужно предоставить привилегии для localhost отдельно – user2398796
Во-первых, пытаетесь ли вы выполнить 4 заявления один за другим? – draxxxeus
Все работает отлично, спасибо снова. – user2398796