在google上创建函数mysql提供" SUPER权限和二进制日志记录已启用"错误

时间:2016-06-09 06:02:55

标签: mysql google-app-engine google-cloud-sql

尝试在Google Myql上创建功能。这些功能在另一台服务器(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$$

不想禁用二进制日志记录

2 个答案:

答案 0 :(得分:3)

如果使用Cloud SQL,请通过运行以下命令启用log_bin_trust_function_creators

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

Cloud SQL Documentation中的更多信息。

答案 1 :(得分:0)

创建功能需要here中所述的SUPER特权。但是,root或其他用户没有here中所述的SUPER特权,因此,如果启用了二进制文件,则无法运行此特权。

这里唯一的解决方法是创建一个Google Compute Engine实例并在那里建立MySQL数据库。