2010-07-27 9 views
1

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.

Répondre

2

Votre utilisateur n'a pas de super privilège. Vous devrez contacter votre fournisseur d'hébergement Web et demandez-lui de le mettre à jour. S'ils ne vous accordent pas cette option, demandez-leur d'exécuter le script pour vous.

+0

Pourquoi ai-je besoin de super privilige pour créer une fonction? – cypher

+0

+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. –

+0

Oh, d'accord, je n'ai pas vu ça avant. Zut. – cypher

Questions connexes