2017-11-17 298 views
1
CREATE TRIGGER trigger_LocationType_Insert 
BEFORE UPDATE ON LocationType 
FOR EACH ROW 
SET NEW.NAME = '' 

返回此錯誤:谷歌雲中的MySQL表無法創建觸發器

[HY000] [1419]你沒有SUPER權限和二進制日誌被啓用,(你的威力*要使用不太安全的log_bin_trust_function_creators變量)

我知道這是因爲即使是root用戶「擁有除SUPER和FILE以外的所有權限」。 https://cloud.google.com/sql/docs/mysql/users

我認爲如果我可以「將log_bin_trust_function_creators設置爲1」,那麼它會工作(該用戶具有CREATE TRIGGER權限)。但是,我不知道如何在Google Cloud SQL控制檯或sql語句中執行此操作。

如何在此環境中創建一個TRIGGER?

+0

嘗試創建與'DEFINER = user'或'DEFINER = CURRENT_USER'讀取(https://dev.mysql.com/doc/refman/5.7/en /create-trigger.html) –

+0

我試過CREATE DEFINER = CURRENT_USER TRIGGER ...沒有任何改變。 – Gary

回答

2

本頁面描述瞭如何修改MySQL的配置選項,谷歌的雲計算實例:https://cloud.google.com/sql/docs/mysql/flags

Select the instance to open its Instance Overview page.

The database flags that have been set are listed under the Database flags section.

你必須使用自己的UI改變全局變量,因爲你不能沒有SUPER權限使用SET GLOBAL

log_bin_trust_function_creators選項列在支持的配置選項中,您可以在上面鏈接的頁面的UI中更改這些選項。

想了解更多關於此錯誤,請參閱https://dev.mysql.com/doc/refman/5.7/en/stored-programs-logging.html