谷歌云中的MySQL表无法创建触发器
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?
本页面描述了如何修改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
尝试创建与'DEFINER = user'或'DEFINER = CURRENT_USER'读取(https://dev.mysql.com/doc/refman/5.7/en /create-trigger.html) –
我试过CREATE DEFINER = CURRENT_USER TRIGGER ...没有任何改变。 – Gary