0
我正在使用下面的函數來分割一個字符串。當我嘗試在我的實時數據庫上創建函數時,出現以下錯誤:Mysql函數確定性錯誤
該函數在其聲明中沒有DETERMINISTIC,NO SQL或READS SQL DATA,並且啓用了二進制日誌記錄。
的功能實際上並沒有訪問數據庫的。它所做的只是分解一個字符串。所以如果我發送'1,2,3,4'就會分裂它們。我如何克服這個錯誤?我實際上並沒有修改任何表格。
DELIMITER ;;
CREATE FUNCTION `stringSplit`(
x VARCHAR(255),
delim VARCHAR(12),
pos INT) RETURNS varchar(255) CHARSET latin1
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, ',', pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), delim, '') ;;
DELIMITER ;
******更新******
我收到以下錯誤代碼。
ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled
我認爲在return語句前加上'DETERMINISTIC'是正確的。我認爲這是一個涉及特權的問題。
適合我。在這裏看到:http://sqlfiddle.com/#!9/6e43c/5也許你需要改變你的分隔符爲//? –
你正在得到什麼確切的錯誤? –
就像錯誤信息告訴你:如果啓用二進制日誌記錄,你的函數必須是'DETERMINISTIC'(或其他兩個中的一個)。由於你的函數實際上是確定性的,所以你所要做的就是告訴MySQL,通過在'RETURN'(而不是'returns')的前面添加'DETERMINISTIC'這個詞。 – Solarflare