欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MYSQL 創(chuàng)建函數(shù)出錯(cuò)的解決方案

 更新時(shí)間:2015年08月14日 15:40:09   作者:索探者  
在程序開(kāi)發(fā)過(guò)程中,大家有沒(méi)有遇到過(guò)mysql函數(shù)不能創(chuàng)建,我是遇到過(guò),是一個(gè)很麻煩的問(wèn)題,上網(wǎng)搜了些相關(guān)資料,整理在一起了,供大家參考,幫助那些需要幫助的朋友

在使用MySQL數(shù)據(jù)庫(kù)時(shí),有時(shí)會(huì)遇到MySQL函數(shù)不能創(chuàng)建的情況。下面就教您一個(gè)解決MySQL函數(shù)不能創(chuàng)建問(wèn)題的方法,供您借鑒參考。

案例一:

目前在項(xiàng)目中,執(zhí)行創(chuàng)建mysql的函數(shù)出錯(cuò),

mysql 創(chuàng)建函數(shù)出錯(cuò)信息如下:

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

首先檢查創(chuàng)建函數(shù)的功能是否開(kāi)啟,檢查是否開(kāi)啟創(chuàng)建功能的SQL如下:

-- 查看是否開(kāi)啟創(chuàng)建函數(shù)的功能
show variables like '%func%';
-- 開(kāi)啟創(chuàng)建函數(shù)的功能
set global log_bin_trust_function_creators = 1;

執(zhí)行完SQL之后發(fā)現(xiàn)已經(jīng)開(kāi)啟了,隨檢查自己的SQL是否寫(xiě)錯(cuò)(因?yàn)镾QL是別人給的,在別人環(huán)境沒(méi)問(wèn)題,在自己的環(huán)境就有可能)。

突然發(fā)現(xiàn)了確實(shí)是SQL出現(xiàn)問(wèn)題,由于他創(chuàng)建的SQL有指定用戶,所以導(dǎo)致出現(xiàn)問(wèn)題,以下是他的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規(guī)范,可以發(fā)現(xiàn)就是DEFINER這個(gè)參數(shù)是可以指定數(shù)據(jù)庫(kù)用戶的,但是自己的庫(kù)卻不是這個(gè)用戶,所以導(dǎo)致問(wèn)題。

目前問(wèn)題已經(jīng)解決。

-EOF-

案例二:

在MySQL創(chuàng)建用戶自定義函數(shù)時(shí),報(bào)以下錯(cuò)誤:

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)

這是因?yàn)橛幸粋€(gè)安全參數(shù)沒(méi)有開(kāi)啟,log_bin_trust_function_creators 默認(rèn)為0,是不允許function的同步的,開(kāi)啟這個(gè)參數(shù),就可以創(chuàng)建成功了。

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上開(kāi)啟了該參數(shù),記得在slave端也要開(kāi)啟這個(gè)參數(shù)(salve需要stop后再重新start),否則在master上創(chuàng)建函數(shù)會(huì)導(dǎo)致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) 

分析:

根據(jù)系統(tǒng)提示,導(dǎo)致該錯(cuò)誤的原因可能是一個(gè)安全設(shè)置方面的配置,查手冊(cè)log_bin_trust_function_creators參數(shù)缺省0,是不允許function的同步的,一般我們?cè)谂渲胷epliaction的時(shí)候,都忘記關(guān)注這個(gè)參數(shù),這樣在master更新funtion后,slave就會(huì)報(bào)告錯(cuò)誤,然后slave stoped。

處理過(guò)程:

登陸mysql數(shù)據(jù)庫(kù)

> set global log_bin_trust_function_creators = 1;
> start slave;

跟蹤mysql的啟動(dòng)日志,slave正常運(yùn)行,問(wèn)題解決。

相關(guān)文章

  • mysql 1130錯(cuò)誤,無(wú)法登錄遠(yuǎn)程服務(wù)的解決

    mysql 1130錯(cuò)誤,無(wú)法登錄遠(yuǎn)程服務(wù)的解決

    這篇文章主要介紹了mysql 1130錯(cuò)誤,無(wú)法登錄遠(yuǎn)程服務(wù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Mysql中的單表最大記錄是多少

    Mysql中的單表最大記錄是多少

    這篇文章主要介紹了Mysql中的單表最大記錄是多少問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • MySQL處理重復(fù)數(shù)據(jù)的學(xué)習(xí)筆記

    MySQL處理重復(fù)數(shù)據(jù)的學(xué)習(xí)筆記

    在本篇文章里小編給大家分享的是一篇關(guān)于MySQL處理重復(fù)數(shù)據(jù)的學(xué)習(xí)筆記,需要的朋友們可以參考下。
    2020-03-03
  • 詳解MySQL中的NULL值

    詳解MySQL中的NULL值

    這篇文章主要介紹了MySQL中的NULL值的相關(guān)知識(shí),是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • RR與RC隔離級(jí)別下索引和鎖的測(cè)試腳本示例代碼

    RR與RC隔離級(jí)別下索引和鎖的測(cè)試腳本示例代碼

    這篇文章主要給大家介紹了關(guān)于RR與RC隔離級(jí)別下索引和鎖的測(cè)試腳本的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • MySQL8.0開(kāi)啟遠(yuǎn)程連接權(quán)限的方法步驟

    MySQL8.0開(kāi)啟遠(yuǎn)程連接權(quán)限的方法步驟

    MySQL8.0設(shè)置遠(yuǎn)程訪問(wèn)權(quán)限,找了一圈都沒(méi)找到一個(gè)適用的,索性自己寫(xiě)一個(gè),這篇文章主要給大家介紹了關(guān)于MySQL8.0開(kāi)啟遠(yuǎn)程連接權(quán)限的方法步驟,需要的朋友可以參考下
    2022-06-06
  • MySQL之InnoDB下的鎖問(wèn)題

    MySQL之InnoDB下的鎖問(wèn)題

    這篇文章主要介紹了MySQL之InnoDB下的鎖問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 深入理解MySQL中MVCC與BufferPool緩存機(jī)制

    深入理解MySQL中MVCC與BufferPool緩存機(jī)制

    這篇文章主要介紹了深入理解MySQL中MVCC與BufferPool緩存機(jī)制,MySQL默認(rèn)RR隔離級(jí)別就是通過(guò)該機(jī)制來(lái)保證的MVCC,更多主題相關(guān)內(nèi)容,需要的可以參考下面文章內(nèi)容介紹
    2022-05-05
  • mysql jdbc連接步驟及常見(jiàn)參數(shù)

    mysql jdbc連接步驟及常見(jiàn)參數(shù)

    這篇文章主要介紹了mysql jdbc連接步驟及常見(jiàn)參數(shù),需要的朋友可以參考下
    2015-09-09
  • MySql存儲(chǔ)表情報(bào)錯(cuò)的排查解決

    MySql存儲(chǔ)表情報(bào)錯(cuò)的排查解決

    隨著互聯(lián)網(wǎng)的發(fā)展,產(chǎn)生了許多新類型的字符,例如emoji這種類型的符號(hào),也就是我們通常在聊天時(shí)發(fā)的小黃臉表情,下面這篇文章主要給大家介紹了關(guān)于MySql存儲(chǔ)表情報(bào)錯(cuò)的排查解決,需要的朋友可以參考下
    2022-07-07

最新評(píng)論