Mysql 用户无法执行挖掘表的过程
我创建了一个过程来截断参数中提供的表Mysql 用户无法执行挖掘表的过程,mysql,Mysql,我创建了一个过程来截断参数中提供的表 CREATE DEFINER=`imerrywe`@`%` PROCEDURE `truncate_table`(`table` VARCHAR(255)) BEGIN SET @s = CONCAT('TRUNCATE ', @table); PREPARE stmt3 FROM @s; EXECUTE stmt3; END 当我以“imerrywe”登录时调用它时,该过
CREATE DEFINER=`imerrywe`@`%` PROCEDURE `truncate_table`(`table`
VARCHAR(255))
BEGIN
SET @s = CONCAT('TRUNCATE ', @table);
PREPARE stmt3 FROM @s;
EXECUTE stmt3;
END
当我以“imerrywe”登录时调用它时,该过程工作正常
mysql>调用truncate_table('test_table');
查询正常,0行受影响(0.10秒)
我创建了一个测试用户并授予该用户对该过程的执行权限,但当我以该用户身份登录时尝试调用该过程时,它将不会执行
mysql>调用truncate_table('test_table');
错误1064(42000):您的SQL语法有错误
是否缺少某些权限?@表是一个变量,请使用此变量:-
CREATE DEFINER=`imerrywe`@`%` PROCEDURE `truncate_table`(in_table
VARCHAR(255))
BEGIN
SET @s = CONCAT('TRUNCATE ', in_table);
PREPARE stmt3 FROM @s;
EXECUTE stmt3;
END
请记住,例程参数不同于。试试看:
SET@s=CONCAT('TRUNCATE','table')代码>。谢谢。现在效果很好。