91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

解決MYSQL創建函數出錯的問題

發布時間:2020-09-28 17:40:45 來源:億速云 閱讀:148 作者:小新 欄目:MySQL數據庫

小編給大家分享一下解決MYSQL創建函數出錯的問題,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

例一:

目前在項目中,執行創建mysql的函數出錯,

mysql 創建函數出錯信息如下:

Error Code: 1227. Access denied; you need (at least one of) the SUPER privilege(s) for this operation

首先檢查創建函數的功能是否開啟,檢查是否開啟創建功能的SQL如下:

-- 查看是否開啟創建函數的功能
show variables like '%func%';
-- 開啟創建函數的功能
set global log_bin_trust_function_creators = 1;

執行完SQL之后發現已經開啟了,隨檢查自己的SQL是否寫錯(因為SQL是別人給的,在別人環境沒問題,在自己的環境就有可能)。

突然發現了確實是SQL出現問題,由于他創建的SQL有指定用戶,所以導致出現問題,以下是他的SQL:

DROP FUNCTION IF EXISTS `nextval`;
DELIMITER ;;
CREATE DEFINER=`devop`@`%` FUNCTION `nextval`(`seq_name` VARCHAR(50)) RETURNS varchar(20) CHARSET utf8
BEGIN 
 DECLARE seq_max BIGINT(20);
 UPDATE sequenceconftable SET `max` = `max` + NEXT WHERE NAME = seq_name; 
 SELECT `max` INTO seq_max FROM sequenceconftable WHERE NAME = seq_name ;
 RETURN seq_max; 
END
;;
DELIMITER ;

由于CREATE_FUNCTION規范,可以發現就是DEFINER這個參數是可以指定數據庫用戶的,但是自己的庫卻不是這個用戶,所以導致問題。

目前問題已經解決。

-EOF-

案例二:

在MySQL創建用戶自定義函數時,報以下錯誤:

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 默認為0,是不允許function的同步的,開啟這個參數,就可以創建成功了。

mysql> show variables like '%fun%'; 
+---------------------------------+-------+ 
| Variable_name     | Value | 
+---------------------------------+-------+ 
| log_bin_trust_function_creators | ON | 
+---------------------------------+-------+ 
1 row in set (0.00 sec) 
 
mysql> set global log_bin_trust_function_creators=1;        
Query OK, 0 rows affected (0.00 sec) 
 
mysql> show variables like '%fun%';            
+---------------------------------+-------+ 
| Variable_name     | Value | 
+---------------------------------+-------+ 
| log_bin_trust_function_creators | ON | 
+---------------------------------+-------+ 
1 row in set (0.00 sec)

如果是在有master上開啟了該參數,記得在slave端也要開啟這個參數(salve需要stop后再重新start),否則在master上創建函數會導致replaction中斷。

案例三:

Error Code : 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)  
(0 ms taken)

分析:

根據系統提示,導致該錯誤的原因可能是一個安全設置方面的配置,查手冊log_bin_trust_function_creators參數缺省0,是不允許function的同步的,一般我們在配置repliaction的時候,都忘記關注這個參數,這樣在master更新funtion后,slave就會報告錯誤,然后slave stoped。

處理過程:

登陸mysql數據庫

> set global log_bin_trust_function_creators = 1;
> start slave;

跟蹤mysql的啟動日志,slave正常運行,問題解決。

看完了這篇文章,相信你對解決MYSQL創建函數出錯的問題有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

军事| 奉节县| 娱乐| 宁陵县| 汉中市| 盐亭县| 门头沟区| 邢台市| 广平县| 惠水县| 高安市| 交口县| 元阳县| 德化县| 攀枝花市| 山阴县| 大足县| 茶陵县| 米脂县| 徐水县| 通城县| 丘北县| 隆德县| 土默特右旗| 临沧市| 阳东县| 荥经县| 金塔县| 合阳县| 石渠县| 阳新县| 大田县| 屯留县| 连平县| 昌乐县| 虞城县| 隆德县| 湘潭市| 准格尔旗| 临高县| 昔阳县|