MySQL CREATE FUNCTION在共享的Web服务器上失败

时间:2010-07-27 19:31:15

标签: mysql shared-hosting create-function

我有以下功能。当我尝试在网络服务器上创建它时,它失败并带有

  

您没有SUPER权限并且启用了二进制日志记录(可能想要使用安全性较低的log_bin_trust_function_creators变量)

我从来没有遇到任何其他虚拟主机(和完全相同的功能)相同的问题,我该如何解决这个问题? (我无法更改MySQL设置)。

CREATE FUNCTION `has_action_access`(in_role VARCHAR(255), in_request VARCHAR(255), in_action VARCHAR(255)) RETURNS tinyint(1)
    READS SQL DATA
    DETERMINISTIC
BEGIN

    DECLARE current_role VARCHAR(255);  
    DECLARE found, cont TINYINT(1) DEFAULT 0;
    SET current_role = in_role;

    findattempt: REPEAT
        SELECT COUNT(*) FROM cyp_action_access WHERE request = in_request AND action = in_action AND role = current_role INTO found;

        IF found = 0 THEN
            SELECT COUNT(*) FROM cyp_roles WHERE name = current_role INTO cont;
            IF cont = 1 THEN
                SELECT inherits FROM cyp_roles WHERE name = current_role INTO current_role;
                END IF;
            END IF;
    UNTIL (cont = 0 OR found > 0) END REPEAT;
    RETURN found;
END;
  • MySQL服务器的版本为5.0.90-log

1 个答案:

答案 0 :(得分:2)

您的用户没有超级权限。您需要联系您的网站托管服务提供商并让他们更新此信息。如果他们不会授予您该选项,请让他们为您执行脚本。