【MySQL】ERROR 1418 This function has none of DETERMINISTIC, NO SQL, ...

神諭丶發表於2015-12-22
【問題描述】:
在mysql建立function時經常出現的一個報錯,

原因是開啟了binary log,而且建立的函式沒有指定如下之一的引數
DETERMINISTIC
READS SQL DATA
NO SQL

其完整報錯是:
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)

【解決方案】:
其解決辦法,只要將log_bin_trust_function_creators設定為1即可。
log_bin_trust_function_creators引數是一個全域性變數,只能用
SET @@GLOBAL.log_bin_trust_function_creators = 1; 這類global方式設定其值,該值為布林型別:
1、ON、TRUE同義,同樣0、OFF、FALSE同義。


Command-Line Format --log-bin-trust-function-creators
System Variable Name log_bin_trust_function_creators
Variable Scope Global
Dynamic Variable Yes
  Permitted Values
Type boolean
Default FALSE


這個引數在開啟二進位制日誌時被應用,它認為儲存函式的建立者必須為可信任的,反之寫入二進位制日誌將認為是不安全的。
該引數預設為0,除非使用者有SUPER許可權,此外還需有CREATE ROUTINE和ALTER ROUNTINE許可權,才可建立和修改儲存函式。
如果設定為1,mysql不會強制有哪些建立限制,這個引數同樣適用於TRIGGER的建立。




作者微信公眾號(持續更新)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29773961/viewspace-1876828/,如需轉載,請註明出處,否則將追究法律責任。

相關文章