2017-11-17 235 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