MySQL 創建函數報錯 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled


MySQL 創建函數報錯 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled


 

 

背景描述

在MySQL中創建函數時,報錯如下:

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指定一個參數。

 

 

解決方案

可以通過將變量 log_bin_trust_function_creators 的值設置為“開啟”實現。

方式1臨時方案,MySQL服務重啟會失效)
可以通過SQL語句設置,SQL語句如下:


1)查詢變量值

show variables like 'log_bin_trust_function_creators';

 

 
2)設置變量值

set global log_bin_trust_function_creators = 1;

show variables like 'log_bin_trust_function_creators';

 


方式2永久方案,需要重啟MySQL服務,配置才能生效)
在 my.cnf 配置文件中添加如下一行配置,然后重啟MySQL服務

log_bin_trust_function_creators = 1

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM