gpt4 book ai didi

mysql - 在 phpMyAdmin 中创建函数 - 错误 : access denied you need the super privilege for this operation

转载 作者:行者123 更新时间:2023-11-30 00:17:17 25 4
gpt4 key购买 nike

我导入了 MySQL 数据库。所有表均已成功导入,但函数未成功导入。我执行 SQL 查询的唯一方法是通过 phpMyAdmin 或使用 PHP 脚本(无 SSH)。

以下是要导入的函数的示例:

DELIMITER ;;
/*!50003 DROP FUNCTION IF EXISTS `f_calc_gst` */;;
/*!50003 SET SESSION SQL_MODE=""*/;;
/*!50003 CREATE*/ /*!50020 DEFINER=`journal`@`%`*/ /*!50003 FUNCTION `f_calc_gst`(p_ht decimal(15,3), p_province varchar(2)) RETURNS varchar(255) CHARSET utf8
begin
declare res varchar(255);
declare v_gst decimal(15,3);
declare v_gst_formula varchar(255);

select GST, GST_formula
into v_gst, v_gst_formula
from taxes_periods
where NOW() between dt_debut and dt_fin
and id_province = p_province;

set v_gst_formula = replace(v_gst_formula, 'HT$', p_ht);
set v_gst_formula = replace(v_gst_formula, 'GST%', v_gst);

set res = concat('select round(', v_gst_formula, ',2) "gst"');
return res;
end */;;

如果我将此代码粘贴到 phpMyAdmin 中,我会收到此错误:#1227 - 访问被拒绝;您需要 super 权限才能执行此操作

我尝试删除“/!50003”和“/”来取消 SQL 注释,但收到相同的错误消息。

我还尝试不使用任何分隔符并删除“DELIMITER ;;”并收到此错误:

DROP FUNCTION IF EXISTS f_calc_gst SET SESSION SQL_MODE =  "" CREATE DEFINER =  `journal`@`%` FUNCTION  `f_calc_gst` (

p_ht DECIMAL( 15, 3 ) ,
p_province VARCHAR( 2 )
) RETURNS VARCHAR( 255 ) CHARSET utf8 BEGIN declare res VARCHAR( 255 ) ;

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET SESSION SQL_MODE=""
CREATE DEFINER=`journal`@`%` FUNCTION `f_calc_gst`(p_ht ' at line 2

也尝试过:

    CREATE DEFINER=`journal`@`%` FUNCTION `f_calc_gst`(p_ht decimal(15,3), p_province varchar(2)) RETURNS varchar(255) CHARSET utf8
begin
declare res varchar(255);
declare v_gst decimal(15,3);
declare v_gst_formula varchar(255);

select GST, GST_formula
into v_gst, v_gst_formula
from taxes_periods
where NOW() between dt_debut and dt_fin
and id_province = p_province;

set v_gst_formula = replace(v_gst_formula, 'HT$', p_ht);
set v_gst_formula = replace(v_gst_formula, 'GST%', v_gst);

set res = concat('select round(', v_gst_formula, ',2) "gst"');
return res;
end//

结果:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3 

问题出在 SQL、phpMyAdmin 还是服务器上?

最佳答案

问题是我没有 super 权限,但如果我从查询中删除 DEFINER,我就不再需要此权限。

As of MySQL 5.0.3, CREATE PROCEDURE and CREATE FUNCTION require the CREATE ROUTINE privilege. They might also require the SUPER privilege, depending on the DEFINER value, as described later in this section. If binary logging is enabled, CREATE FUNCTION might require the SUPER privilege, as described in Section 18.6, “Binary Logging of Stored Programs”.

还必须在 SQL 文本框下设置分隔符字段。 phpMyAdmin Delimiter field

这是没有 DEFINER 语句的 SQL 查询:

/*!50003 DROP FUNCTION IF EXISTS `f_calc_gst` */;;
/*!50003 SET SESSION SQL_MODE=""*/;;
/*!50003 CREATE*/ /*!50003 FUNCTION `f_calc_gst`(p_ht decimal(15,3), p_province varchar(2)) RETURNS varchar(255) CHARSET utf8
begin
declare res varchar(255);
declare v_gst decimal(15,3);
declare v_gst_formula varchar(255);

select GST, GST_formula
into v_gst, v_gst_formula
from taxes_periods
where NOW() between dt_debut and dt_fin
and id_province = p_province;

set v_gst_formula = replace(v_gst_formula, 'HT$', p_ht);
set v_gst_formula = replace(v_gst_formula, 'GST%', v_gst);

set res = concat('select round(', v_gst_formula, ',2) "gst"');
return res;
end */;;

关于mysql - 在 phpMyAdmin 中创建函数 - 错误 : access denied you need the super privilege for this operation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23554415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com