2013-02-26 61 views
2

我在亞洲特區(新加坡)地區的亞馬遜rds上創建了一箇中等實例。我用主密碼創建了我的主用戶。並且它可以正常工作/連接到本地PC上安裝的工作臺。 但是當我打算在這個實例創建函數,它告訴我follwing錯誤:「錯誤1418:該功能現在沒有確定的,沒有SQL的,或者讀取SQL數據,其聲明和二進制日誌功能已啓用(你威力希望使用不太安全的log_bin_trust_function_creators變量)「。 在我的實例我的變量(log_bin_trust_function_creators)顯示OFF。 現在當我去改變變量使用SET GLOBAL log_bin_trust_function_creators = 1;命令,它給了我另一個錯誤「錯誤代碼:1227.訪問被拒絕;您需要(至少有一個)SUPER權限(s)用於此操作」。 我不知道如何解決這個錯誤。超級特權未在亞馬遜rds中定義主用戶mysql

有人可以幫忙?

謝謝大家。

回答

1

更好的方法是應用您自己的參數組,並將log_bin_trust_function_creators設置爲true。 (其默認爲false)

0

這發生在您嘗試創建一個DEFINER一個過程/函數/視圖不是當前用戶。

要解決此問題,請刪除或更新DEFINER子句。

+0

這將是很棒的,如果它的工作,但仍然沒有喜悅與DEFINER = CURRENT_USER。 – Steve 2014-05-08 23:35:10

1

集log_bin_trust_function_creators = 1的RDS實例的參數組。

注:默認參數組不可編輯。創建一個新的參數組,它由UI(AWS管理控制檯)修改或者乾脆使用命令

DELIMITER $$ 
CREATE DEFINER=`DB_USERNAME_HERE`@`%` FUNCTION `GetDistance`(coordinate1 VARCHAR(120), coordinate2 VARCHAR(120)) RETURNS decimal(12,8) 
READS SQL DATA 
BEGIN 
    DECLARE distance DECIMAL(12,8); 
    /*Business logic goes here for the function*/ 
    RETURN distance; 
END $$ 
DELIMITER ; 

這裏分配給RDS實例,你有你更換DB_USERNAME_HERE RDS數據庫用戶名和函數名稱根據你的需要。

重要的是:DEFINER=`DB_USERNAME_HERE`@`%`

這是我在參數組設置log_bin_trust_function_creators = 1之後,面臨的問題。它的功能就像一個魅力。