sql >> Database teknologi >  >> RDS >> Mysql

Oprettelse af funktioner i phpMyAdmin - Fejl:adgang nægtet, du har brug for superprivilegiet til denne handling

Problemet var, at jeg ikke havde superprivilegiet, men hvis jeg fjerner DEFINER fra forespørgslen, har jeg ikke længere brug for dette privilegium.

Fra og med MySQL 5.0.3 kræver CREATE PROCEDURE og CREATE FUNCTION privilegiet CREATE ROUTINE. De kan også kræve SUPER-privilegiet, afhængigt af DEFINER-værdien, som beskrevet senere i dette afsnit. Hvis binær logning er aktiveret, kan CREATE FUNCTION kræve SUPER-privilegiet, som beskrevet i afsnit 18.6, "Binær logning af lagrede programmer".

Skulle også indstille afgrænsningsfeltet under SQL-tekstboksen.

Her er SQL-forespørgslen uden DEFINER-sætningen:

/*!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. Dataanalyseguide:Det er tid til at udmærke sig ved at bruge Excel!

  2. Slut dig til os i Amsterdam til et møde med OptimaData &VidaXL

  3. SQL Server System Databaser – Grundlæggende koncepter

  4. Hvordan rydder man ODP.NET-forbindelsespuljen ved forbindelsesfejl?