Mysql
 sql >> база данни >  >> RDS >> Mysql

Създаване на функции в phpMyAdmin - Грешка:достъпът е отказан, имате нужда от супер привилегията за тази операция

Проблемът беше, че нямах супер привилегията, но ако премахна DEFINER от заявката, вече нямам нужда от тази привилегия.

От MySQL 5.0.3, CREATE PROCEDURE и CREATE FUNCTION изискват привилегията CREATE ROUTINE. Те може също да изискват привилегията SUPER, в зависимост от стойността на DEFINER, както е описано по-късно в този раздел. Ако двоичното регистриране е активирано, CREATE FUNCTION може да изисква SUPERprivilege, както е описано в раздел 18.6, „Бинарно регистриране на съхранените програми“.

Също така трябваше да зададете полето за разделители под текстовото поле на SQL.

Ето SQL заявката без израза DEFINER:

/*!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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Надстройте MySQL до MariaDB 10 (Част 2 – Надстройте MariaDB/MySQL 5.5 до версия 10.0)

  2. Как да добавя индекси към MySQL таблици?

  3. Превъртане през набори от резултати в MySQL

  4. MySQL – Как да генерираме произволно число

  5. Как да се присъедините към една и съща маса, два пъти, в mysql?