MySQL 创建存储过程报错:ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or ...
创建存储过程报错
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