Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Tworzenie funkcji w phpMyAdmin - Błąd:odmowa dostępu, potrzebujesz super uprawnień do tej operacji

Problem polegał na tym, że nie miałem super uprawnień, ale jeśli usunę DEFINER z zapytania, nie potrzebuję już tych uprawnień.

Od wersji MySQL 5.0.3 CREATE PROCEDURE i CREATE FUNCTION wymagają uprawnienia CREATE ROUTINE. Mogą również wymagać uprawnienia SUPER, w zależności od wartości DEFINIER, jak opisano w dalszej części tej sekcji. Jeśli rejestrowanie binarne jest włączone, funkcja CREATE FUNCTION może wymagać uprawnień SUPER, jak opisano w Sekcja 18.6, „Logowanie binarne zapisanych programów”.

Trzeba też było ustawić pole ogranicznika pod polem tekstowym SQL.

Oto zapytanie SQL bez instrukcji DFINER:

/*!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. Wyłącz logowanie root w phpMyAdmin

  2. Jak przyciąć tabelę w MySQL

  3. Uzyskaj różnicę lat między dwiema datami w MySQL jako liczbę całkowitą

  4. Jak przechowywać nazwę pliku w bazie danych wraz z innymi informacjami podczas przesyłania obrazu na serwer za pomocą PHP?

  5. Polecenia tworzenia kopii zapasowych i przywracania danych MySQL do administrowania bazą danych