最新消息: 新版網站上線了!!!

[Err] 1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled

自定義函數

create function project() returns int
begin
DECLARE proId INT;
DECLARE proName VARCHAR(256);
 DECLARE ProjCRowCur CURSOR FOR select _name,_no from techmanage.tech_project;
 #OPEN ProjCRowCur;
 #SET proId=0;
 #SET proName='';
 #FETCH ProjCRowCur INTO proId,proName
return 1;
end


[Err] 1418 - 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)

錯誤原因函數沒有指定參數

其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我們開啟了 bin-log, 我們就必須為我們的function指定一個參數。

設置方法

SQL code

mysql> show variables like 'log_bin_trust_function_creators';

+---------------------------------+-------+

| Variable_name          | Value |

+---------------------------------+-------+

| log_bin_trust_function_creators | OFF  |

+---------------------------------+-------+

mysql> set global log_bin_trust_function_creators=1;

mysql> show variables like 'log_bin_trust_function_creators';

+---------------------------------+-------+

| Variable_name          | Value |

+---------------------------------+-------+

| log_bin_trust_function_creators | ON  |

這樣添加了參數以后,如果mysqld重啟,那個參數又會消失,因此記得在my.cnf配置文件中添加:

log_bin_trust_function_creators=1或者log_bin_trust_function_creators=TRUE;

設置之后在執行函數結果不報錯了

image.png



這是我們開啟了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指定一個參數。


在MySQL中創建函數時出現這種錯誤的解決方法:
set global log_bin_trust_function_creators=TRUE;


.....

轉載請注明:谷谷點程序 » [Err] 1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled

体彩25选5开奖号码