以下是引用片段:
ErrorCode:1418
ThisfunctionhasnoneofDETERMINISTIC,NOSQL,orREADSSQLDATAinitsdeclarationandbinaryloggingisenabled(you*might*wanttousethelesssafelog_bin_trust_function_creatorsvariable)-
(0mstaken)
解決方法如下:
1. mysql> SET GLOBAL log_bin_trust_function_creators = 1;
2. 系統(tǒng)啟動時 --log-bin-trust-function-creators=1
3. 在my.ini(linux下為my.conf)文件中 [mysqld] 標記后加一行內容為 log-bin-trust-function-creators
如果在create function的時候有 1418的錯語的時候:那么只需要執(zhí)行set global log_bin_trust_routine_creators=1;
然后怎么create function 都不會有問題(當然,你的function必段正確哦),這是mysql的一個bug,搞不懂為什么,反正這樣做就OK了.
另外,也可以直接在配置文件my.cnf中添加如下行[mysqld] log_bin_trust_routine_creators=1;
這個命令可以在sql editor的環(huán)境中運行,并不需要重新啟動服務哦。
MySQL自5.0之後終於支援SP( Store Procedures ),
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) Assessment of the nature of a function is based on the “honesty” of the creator: MySQL does not check that a function declared DETERMINISTIC is free of statements that produce non-deterministic results.
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.
1. mysql> SET GLOBAL log_bin_trust_function_creators = 1;
2. 系統(tǒng)啟動時,加上--log-bin-trust-function-creators 參數為1
3. 直接在my.ini的[mysqld]區(qū)段加上log-bin-trust-function-creators=1
當然我想大多數人會用第三種方法,
ok...繼續(xù)我的SP學習,good luck..
二、mysql ERROR 1418 (HY000)
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)
應該是我們開啟了bin-log, 我們就必須指定我們的函數是否是
1 DETERMINISTIC 不確定的
2 NO SQL 沒有SQl語句,當然也不會修改數據
3 READS SQL DATA 只是讀取數據,當然也不會修改數據
4 MODIFIES SQL DATA 要修改數據
5 CONTAINS SQL 包含了SQL語句
其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我們開啟了 bin-log, 我們就必須為我們的function指定一個參數。
我們可以通過設置如下的參數來關掉這個。
SET GLOBAL log_bin_trust_function_creators = 1;
(you *might* want to use the less safe log_bin_trust_function_creators
variable)
本文出自:億恩科技【mszdt.com】
服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]
|