sql >> データベース >  >> RDS >> Mysql

phpMyAdminで関数を作成しています-エラー:アクセスが拒否されましたこの操作にはスーパー特権が必要です

    問題は、スーパー特権がなかったということでしたが、クエリからDEFINERを削除すると、この特権は不要になります。

    MySQL 5.0.3以降、CREATEPROCEDUREおよびCREATEFUNCTIONにはCREATEROUTINE権限が必要です。このセクションで後述するように、DEFINER値によっては、SUPER特権が必要になる場合もあります。バイナリロギングが有効になっている場合、18.6項「ストアドプログラムのバイナリロギング」で説明されているように、CREATEFUNCTIONでSUPERprivilegeが必要になる場合があります。

    また、SQLテキストボックスの下に区切り文字フィールドを設定する必要がありました。

    これが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 */;;
    



    1. 修正:「現在のデータベースのバックアップがないため、バックアップログを実行できません。」 SQL Server /SQLEdgeで

    2. LinuxベースのSQLServerインスタンス間のAlwaysON可用性グループについて理解する。パート1

    3. SQL Serverは、コンポーネント「OleAutomationProcedures」のプロシージャ「sys.sp_OACreate」へのアクセスをブロックしました

    4. PostgreSQLで既存のテーブルに自動インクリメントの主キーを追加するにはどうすればよいですか?