J'ai la fonction suivante. Lorsque je tente de créer sur un serveur web, il échoue avecMySQL CREATE FUNCTION échoue sur un serveur Web partagé
Vous n'avez pas le privilège SUPER et le log binaire est activé (vous pourriez vouloir utiliser les log_bin_trust_function_creators moins sûres variables)
Je n'ai jamais eu le même problème avec un autre hébergeur (et la même fonction exacte), comment puis-je résoudre ce problème? (Je ne peux pas changer les paramètres 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;
- version du serveur MySQL est
5.0.90-log
.
Pourquoi ai-je besoin de super privilige pour créer une fonction? – cypher
+1: Oui, [par document] (http://dev.mysql.com/doc/refman/5.1/fr/stored-programs-logging.html) - trouvez la référence 1419 et faites défiler un peu vers le haut. –
Oh, d'accord, je n'ai pas vu ça avant. Zut. – cypher