Mysql Google CloudSQL第二代创建功能不工作

Mysql Google CloudSQL第二代创建功能不工作,mysql,google-cloud-platform,google-cloud-sql,Mysql,Google Cloud Platform,Google Cloud Sql,对于Google CloudSQL第二代实例,启用了故障转移复制。之后,当尝试导入数据库时,不允许创建过程。接收以下错误 错误代码:1419。您没有超级特权和二进制文件 日志记录已启用(您可能希望使用不太安全的 日志\u bin\u信任\u函数\u创建者变量) 具有故障转移功能的CloudSQL是否真的不支持此功能 示例执行查询 DELIMITER ;; CREATE FUNCTION `stutzen`(amount INT) RETURNS int(11) DETERMINISTIC

对于Google CloudSQL第二代实例,启用了故障转移复制。之后,当尝试导入数据库时,不允许创建过程。接收以下错误

错误代码:1419。您没有超级特权和二进制文件 日志记录已启用(您可能希望使用不太安全的 日志\u bin\u信任\u函数\u创建者变量)

具有故障转移功能的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 ;

这不是存储过程,而是用户定义的函数。
您需要将此UDF重写为一个存储过程,这将起作用。

Google Cloud SQL同时支持存储过程和函数


在您的情况下,问题似乎是您正在尝试导入一个sql文件,该文件具有某种需要超级权限的例程,这是不允许的。

我尝试使用设置全局日志\u bin\u trust\u函数\u creators,这应该允许在没有超级权限的情况下创建函数,但在CloudSQL中也不允许设置该变量。设置它需要超级权限。

您应该运行:

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

如前所述

您只需将“log\u bin\u trust\u function\u creators”设置为ON

要做到这一点,请打开

选择SQL

选择您的实例

选择编辑

分贝信号

加: 登录\u bin\u信任\u函数\u创建者

一般登录


保存

这样谷歌云SQL就不支持用户定义的功能了?你从哪里找到这些信息的?据我所知,不支持用户定义的函数,请看这里:Hi@MarkVincze,你说得对,云sql支持存储过程和函数,但不支持用户定义的函数。我想说的是,Arvindwill函数可以作为一个函数来编写(因此没有必要将其作为存储函数来编写)。谢谢你的更正,我将编辑答案。;)您应该从cloudsql实例的google设置界面进行设置。它们具有允许更改的特定变量集。