mysql 创建函数问题

mysql 创建函数问题(转)
2010-05-26 19:37

今天在整理数据时,又碰到MySQL函数不能创建的问题,以前也遇到过多次,解决是解决了,但是解决办法总是记不住,也没有很好地写下来,以至于每 次都要再次Google,耗时耗力,这次终于受不了了,还是选择写出来:

出错信息大致类似:

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)

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)

建立不了函数,是未开启功能:

SQL code
       
mysql > show variables like ' %func% ' ; + -- -------------------------------+-------+ | Variable_name | Value | + -- -------------------------------+-------+ | log_bin_trust_function_creators | OFF | + -- -------------------------------+-------+ 1 row in set ( 0.00 sec) mysql > set global log_bin_trust_function_creators = 1 ; Query OK, 0 rows affected ( 0.00 sec) mysql > show variables like ' %func% ' ; + -- -------------------------------+-------+ | Variable_name | Value | + -- -------------------------------+-------+ | log_bin_trust_function_creators | ON | + -- -------------------------------+-------+ 1 row in set ( 0.00 sec) mysql >
搞定!

以下是另外一种解决方法

分析:
根据系统提示,导致该错误的原因可能是一个安全设置方面的配置,查手册log_bin_trust_function_creators参数缺省0,是不 允许function的同步的




一般我们在配置repliaction的时候,都忘记关注这个参数,这样在master更新funtion后,slave就会报告错误,然后slave stoped。

处理过程:
登陆mysql数据库
> set global log_bin_trust_function_creators = 1;
> start slave;

跟踪mysql的启动日志,slave正常运行,问题解决。

持续跟踪,经过一个晚上,bin-relay-log的数据全部同步完毕。 直接在my.cnf里面添加
log_bin_trust_function_creators = 1
这样以后重启了就自动开启了。

你可能感兴趣的:(sql,mysql,Google)