[mySQL] mySQL function 생성 시 1418에러 / ERROR 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)
함수를 만드려고했는데 apply 시 에러가 났다.
내 함수 코드는 이론상 문제없는데(진쨔 >.<) function이 안만들어지는 것 보면 내문제가 아닌 것 같아서 구글링
에러 코드 맨 뒤에 힌트가 있었다.
(you *might* want to use the less safe log_bin_trust_function_creators variable)
위의 설정이 꺼져있어서 함수가 안만들어지는 것이였음.
show global variables like 'log_bin_trust_function_creators';
위의 쿼리를 입력 후 실행해보면
이렇게 결과가 조회된다. 지금은 설정 바꾸고 난 후라 ON으로 되어있는데
해당 설정이 OFF 거나 0 이면 이 설정때문에 함수가 안만들어 지는거다.
SET GLOBAL log_bin_trust_function_creators = 1;
--또는
SET GLOBAL log_bin_trust_function_creators = 'ON';
따라서 설정을 다시 켜주자.
위의 코드 중 한개만 쓰면 된다. 같은 의미임
그럼 아까 본대로 이렇게 설정이되고 sql 함수도 정상적으로 저장된다.
set global 쿼리문을 실행해서 권한을 바꾸려고 하는데
Error Code: 1227. Access denied; you need (at least one of) the SUPER or SYSTEM_VARIABLES_ADMIN privilege(s) for this operation
에러가 난다면 아래 글을 참고하자.