1

私は次の機能を持っています。ウェブサーバーで作成しようとすると、失敗します

SUPER 権限がなく、バイナリ ログが有効になっている (安全性の低い log_bin_trust_function_creators 変数を使用することをお勧めします)

他の Web ホスティング (およびまったく同じ機能) で同じ問題が発生したことはありません。これを修正するにはどうすればよいですか? (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.
4

1 に答える 1

2

あなたのユーザーにはスーパー権限がありません。Webホスティングプロバイダーに連絡して、これを更新してもらう必要があります. そのオプションが許可されない場合は、スクリプトを実行するよう依頼してください。

于 2010-07-27T19:35:11.860 に答える