对于Google CloudSQL第二代实例,启用了故障转移复制。之后,当尝试导入数据库时,不允许创建该过程。收到以下错误。
错误代码:1419。您没有SUPER权限和二进制文件 已启用日志记录(您可能希望使用较不安全的日志 log_bin_trust_function_creators变量)
具有故障转移功能的CloudSQL是否支持功能?
示例执行查询
DELIMITER ;;
CREATE FUNCTION `stutzen`(amount INT) RETURNS int(11)
DETERMINISTIC
BEGIN
DECLARE charges FLOAT DEFAULT 1.0;
SELECT valuesettings INTO charges FROM dreamer_tbl WHERE namesettings='stutzen.co';
RETURN FLOOR((amount / 100) * charges) ;
END ;;
DELIMITER ;
答案 0 :(得分:1)
这不是存储过程,即用户定义的函数。 您需要将此UDF重写为存储过程,这将起作用。
答案 1 :(得分:1)
Google Cloud SQL支持存储过程和函数。
在您的情况下,问题似乎是您正在尝试导入具有某种需要SUPER权限的例程的sql文件,并且这是不允许的。
答案 2 :(得分:0)
我尝试使用SET GLOBAL log_bin_trust_function_creators,它应该允许创建没有SUPER权限的函数,但是在Cloud SQL中也不允许设置该变量。它需要SUPER权限进行设置。
答案 3 :(得分:0)
您应该运行:
gcloud sql instances patch [INSTANCE_NAME] --database-flags
log_bin_trust_function_creators=ON
如here
答案 4 :(得分:0)
您只需要将'log_bin_trust_function_creators'设置为ON
为此,请打开https://console.cloud.google.com
选择SQL
选择您的实例
选择“编辑”
DB信号
添加: log_bin_trust_function_creators上的
general_log on
保存