您的位置:首页 > 博客中心 > 数据库 >

mysql 报错之创建自定义函数

时间:2022-03-10 17:44

I experienced this error while trying to alter one of my stored procedures remotely on a master server. After some research, I ended up getting information from ““.

From MySQL Reference in verbatim:
When you create a stored function, you must declare either that it is deterministic or that it does not modify data. Otherwise, it may be unsafe for data recovery or replication.

By default, for a CREATE FUNCTION statement to be accepted, at least one of DETERMINISTIC, NO SQL, or READS SQL DATA must be specified explicitly. Otherwise an error occurs:

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)

Further reading helped me arrive to the conclusion to the cause of this error:

Cause:
The error arises if the binary logging option, which is required for the replication, is turned on for the MySQL server.

We can choose solutions listed below depending to our system requirements, for me, I opted on using the later.

  1. When creating or altering a stored function, you must declare either that it is deterministic or that it does not modify data. Otherwise, it may be unsafe for data recovery or replication.
  2. To relax the preceding conditions on function creation (that you must have the SUPER privilege and that a function must be declared deterministic or to not modify data), set the global log_bin_trust_function_creators system variable to 1. By default, this variable has a value of 0, but you can change it like this: mysql> SET GLOBAL log_bin_trust_function_creators = 1;

    You can also set this variable by using the –log-bin-trust-function-creators=1 option when starting the server.

    

POSTED ON SUNDAY, NOVEMBER 11TH, 2012 AT   

     

ob·liv·i·on

noun \?-?bli-vē?n\
Reference : 
  1. the fact or condition of forgetting or having forgotten; especially : the condition of being oblivious
  2. the condition or state of being forgotten or unknown
 

tH3 oBlivIOus

gxlsystem.com,布布扣Aldwin Llacuna Galapon
IT Consultant / Software and Web Developer

 

Do not take life too seriously. You might not get out of it alive!

 
  • FACEBOOK
  • TWITTER
     

mysql 报错之创建自定义函数,布布扣,bubuko.com

热门排行

今日推荐

热门手游