​

今天在整理数据时,又碰到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)

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



 



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)


我們也可以在my.ini文件中的mysqld中加入下面這一句

[mysqld]

log-bin=C:\Program Files\MySQL\MySQL Server 5.1\log\log-bin.log  --產生日志文件

log-bin-trust-function-creators=1                    --function功能開啟