删除MySQL中的现有过程

时间:2013-05-19 12:38:51

标签: mysql sql-drop

我在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)
    

2 个答案:

答案 0 :(得分:0)

首先,从GRANT ALL PRIVILEGES ON test.* TO 'test'@'%' WITH GRANT OPTION;

连接时,localhost不会授予用户权限

您需要单独授予localhost

的权限

从错误看,您在第一个DROP之后断开连接并再次从localhost连接。

好吧,如果你一个接一个地执行这4个语句,你应该得到与root

相同的结果
GRANT ALL PRIVILEGES ON test.* TO 'test'@'%' WITH GRANT OPTION;
CREATE PROCEDURE test.foo() SELECT NOW();
DROP PROCEDURE IF EXISTS test.foo; 
DROP PROCEDURE IF EXISTS test.foo; 

如果我的答案清楚,请告诉我

答案 1 :(得分:0)

尝试在DROP PROCEDURE IF EXISTS命令之前使用$(document).ready(function () { $('#jqChart').jqChart({ title: { text: 'Efficiency' }, animation: { duration: 1 }, shadows: { enabled: true }, axes: [ { type: 'category', location: 'bottom', title: { text: 'Days in month' }, categories: [<?php echo $dateData; ?>], zoomEnabled: true, }, { type: 'linear', name: 'y1', location: 'left', title: { text: 'Working hours' }, labels: { stringFormat: '%d' }, minimum:0, maximum:15, interval:1 }, { type: 'category', name: 'y2', location: 'right', strokeStyle: '#FCB441', majorGridLines: { strokeStyle: '#FCB441' }, majorTickMarks: { strokeStyle: '#FCB441' }, title: { text: 'LUF/Efficiency' }, labels: { stringFormat: '%.1f' }, minimum:0, maximum:5 } ], series: [ { type: 'stackedColumn', axisY: 'y1', title: 'Effective time', fillStyle: 'green', data: [<?php echo $dat1; ?>], labels: { font: '12px sans-serif' } }, { type: 'stackedColumn', axisY: 'y1', title: 'Idle time', fillStyle: 'red', data: [<?php echo $dat3; ?>], labels: { font: '12px sans-serif' } } ] }); });