谷歌mysql创建函数时出现“启用了SUPER特权和二进制日志记录”错误

7

我正在尝试在Google CloudSQL上创建MySQL函数。这些函数在另一个服务器(VPS- Godaddy)上运行良好。

官方文档称不支持用户定义函数,但我正在尝试创建普通存储函数而非UDF。

查找错误 - MySQL数据库错误:您没有SUPER特权,并启用了二进制日志记录(您可能希望使用更少安全的log_bin_trust_function_creators变量)

使用Toad登录

使用的用户名为TAdmin

示例函数:

DELIMITER $$
DROP FUNCTION IF EXISTS `func_getEQId`$$
CREATE DEFINER=`TAdmin`@`%` FUNCTION `func_getEQId` (`pTopicId` INT(11))
RETURNS BIGINT(20)

READS SQL DATA DETERMINISTIC

BEGIN
DECLARE vQId bigint (20);

SELECT QId INTO vQId FROM quests WHERE... 

RETURN vQId;

END$$

不想禁用二进制日志记录


我认为问题不是由于二进制日志记录,而是由于使用了“DEFINER”选项,该选项需要SUPER权限。您能否直接使用TAdmin用户定义用户? - Vadim
1
你尝试启用了 log_bin_trust_function_creators 标志吗?通常启用该标志后,你就可以创建函数和存储过程了。 - gabidavila
1
@gabidavila 我尝试了你的建议,它起作用了。打开 log_bin_trust_function_creators 标志就解决了问题,我成功注册了UDF。谢谢。 - Ale
1个回答

7

如果使用Cloud SQL,请通过以下方式启用log_bin_trust_function_creators

gcloud sql instances patch [INSTANCE_NAME] --database-flags log_bin_trust_function_creators=on

请查看Cloud SQL文档以获取更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接