錯誤:存取被拒絕;您需要超級權限才能執行此操作
嘗試將SQL 函數匯入phpMyAdmin 時,您可能會遇到錯誤訊息:「#1227 - 存取被拒絕;您需要超級權限才能執行此操作。」這個錯誤可能會令人沮喪,但解決方案相對簡單。
了解SUPER 權限
在MySQL 中,SUPER 權限是一種特殊的權限級別,它授予用戶執行高級操作的能力,包括創建和修改存儲例程。預設情況下,標準使用者不具備 SUPER 權限。
刪除 DEFINER 語句
在您的情況下,問題是由於在SQL 查詢。 DEFINER 語句指定將擁有所建立函數的使用者。如果指定的使用者沒有 SUPER 權限,查詢將會失敗。
要解決此問題,請在將 SQL 查詢匯入 phpMyAdmin 之前從 SQL 查詢中刪除 DEFINER 語句。這將允許在不需要 SUPER 權限的情況下建立函數。
設定分隔符號
此外,必須在 SQL 文字下設定分隔符號欄位phpMyAdmin 中的方塊。此欄位指定用於分隔 SQL 語句的字元。預設情況下,分號 (;) 用作分隔符,但如果您的查詢在函數定義中包含分號,則需要選擇不同的分隔符。
不帶DEFINER 語句的範例查詢
以下是不帶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 */;;
刪除DEFINER 語句並設定DEFINER正確的分隔符號後,您應該可以匯入SQL 查詢成功進入phpMyAdmin,沒有遇到拒絕存取錯誤。
以上是為什麼在將 SQL 函數匯入 phpMyAdmin 時出現「存取被拒絕;此操作需要 SUPER 權限」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!