鍍金池/ 問答/數(shù)據(jù)庫(kù)  HTML/ 有關(guān)MySQL的1418錯(cuò)誤

有關(guān)MySQL的1418錯(cuò)誤

在自己本地測(cè)試創(chuàng)建函數(shù)的語(yǔ)句時(shí),沒有任何錯(cuò)誤,在生產(chǎn)上,報(bào)1418錯(cuò)誤,如下圖:

clipboard.png
(圖片來(lái)自網(wǎng)絡(luò))

搜了下https://blog.csdn.net/yown/ar...http://blog.sina.com.cn/s/blo...,大概了解了下原因
,決定增加函數(shù)類型的聲明,但自己對(duì)于選值的拿捏還有一些疑問,如下有三個(gè)常見函數(shù),請(qǐng)問該如何選擇函數(shù)類型,謝謝!

CREATE FUNCTION currval(v_seq_name VARCHAR(50)) RETURNS int(11)
READS SQL DATA
BEGIN
    DECLARE val INTEGER;
    SET val = 0;
    SELECT current_val INTO val FROM sequence WHERE seq_name = v_seq_name;
    RETURN val;
END;
CREATE FUNCTION nextval(v_seq_name VARCHAR(50)) RETURNS int(11)
-- 實(shí)在不知道加什么,就加了DETERMINISTIC
DETERMINISTIC
BEGIN
    UPDATE sequence
    SET current_val = current_val + increment_val
    WHERE seq_name = v_seq_name;
    RETURN currval (v_seq_name);
END;
CREATE FUNCTION split_str(
    x VARCHAR (1000),
    delim VARCHAR (10),
    pos INT
) RETURNS varchar(1000)
NO SQL
RETURN REPLACE (
    SUBSTRING(
        SUBSTRING_INDEX(x, delim, pos),
        LENGTH(
            SUBSTRING_INDEX(x, delim, pos - 1)
        ) + 1
    ),
    delim,
    ''
);
回答
編輯回答
護(hù)她命

你的類型選擇是對(duì)的, DETERMINISTIC是指操作后會(huì)有確定的結(jié)果, 這樣在主庫(kù)和從庫(kù)執(zhí)行后得到的結(jié)果是一樣的. 不確定結(jié)果通常是兩種情況: 引入時(shí)間變量或隨機(jī)變量. 由于主庫(kù)和從庫(kù)執(zhí)行的時(shí)間不一樣, 結(jié)果也就不一樣. 這時(shí)文本執(zhí)行日志就無(wú)效了, 這種情況下要采用bin log.

2018年4月3日 17:10