您当前的位置:首页 > 文章 > MySQL 创建存储过程报错:ERROR

MySQL 创建存储过程报错:ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or ...

作者:凡尘dba 时间:2023-11-27 阅读数:159 人阅读

创建存储过程报错

ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

解决办法:

主从上都设置 set global log_bin_trust_function_creators=1。

含义:将 log_bin_trust_function_creators 参数设置为ON,这样一来开启了binlog 的 MySQL Server 便可以随意创建 function。那么为什么 MySQL 有这样的限制呢?因为这里存在潜在的数据安全问题,二进制日志的一个重要功能是用于主从复制,而存储函数有可能导致主从的数据不一致,除非明确的知道创建的 function 在 master 和 slave 上的行为完全一致,否则建议开启此限制。另外如果是在 master 上创建函数,想通过主从复制的方式将函数复制到 slave 上则也需在开启了 binlog 的 slave 中设置上述变量的值为 ON(变量的设置不会从 master 复制到 slave 上,这点需要注意),否则主从复制会报错。


本站大部分文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了您的权益请来信告知我们删除。邮箱:1451803763@qq.com