使用 Navicat 導入備份的時候,出現了 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its 的錯誤,備份裏面是包含了創建的函數的,在本地環境和服務器環境不一樣就報錯了。
問題分析
我們創建函數時必須指定我們的函數是否是
- DETERMINISTIC 不確定的
- NO SQL 沒有 SQL 語句,當然也不會修改數據
- READS SQL DATA 只是讀取數據,當然也不會修改數據
- MODIFIES SQL DATA 要修改數據
- CONTAINS SQL 包含了 SQL 語句
解決方法
在 MySQL 中創建函數時出現這種錯誤的解決方法:
1、在 MySQL 數據庫中執行以下語句,臨時生效,重啓後失效
set global log_bin_trust_function_creators=TRUE;
2、在配置文件 my.ini 的 [mysqld] 配置永久生效
log_bin_trust_function_creators=1