Mysql 함수 추가시
DELIMITER $$
CREATE DEFINER=`admin`@`%` FUNCTION `SPLIT_PART`( str VARCHAR(500), del VARCHAR(2), idx INT ) RETURNS varchar(500) CHARSET utf8
BEGIN
RETURN SUBSTR(SUBSTRING_INDEX(str, del, idx),LENGTH(SUBSTRING_INDEX(str, del, idx-1))+IF(idx > 1, 2, 1));
END$$
DELIMITER ;
이런 에러가 발생시
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)
설치한 Mysql은 8버전대였고 아래의 쿼리를 실행 후 동일한 .sql파일 실행시 정상적으로 동작하였다.
함수 추가 ON/OFF 확인
show global variables like 'log_bin_trust_function_creators';
SET GLOBAL log_bin_trust_function_creators = 1; //ON
#SET GLOBAL log_bin_trust_function_creators = 0; //OFF
1은 ON처리로 함수 생성을 시킬수 있다.
0은 OFF처리로 정상적으로 처리 후 다시 원복시 사용하거나 다른 사용자가 함수를 추가하지 못하도록 막을 수 있을것이다.
이런 에러가 날 경우
Error Code: 1227. Access denied; you need (at least one of) the SUPER privilege(s) for this operation
권환 학인
show grants for admin;
SUPER 권환은 GLOBAL 권한 추가후 다시 변경
'DB > mysql' 카테고리의 다른 글
mysql특정 컬럼,테이블 찾기 (0) | 2022.06.21 |
---|---|
Error code (0) | 2022.06.20 |
id를 group by로 중복 제거 (0) | 2022.05.27 |
mysql DB대소문자 구분 (0) | 2022.05.02 |
워크벤치 덤프 (0) | 2022.04.06 |