This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled 해결 방법
(Symptom)
'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)' on query. Default database: 'dbname'.
(Cause)
Query: 'CREATE DEFINER=`root`@`%` FUNCTION `getSequence`(seq_name VARCHAR(24)) RETURNS int(4)
(Solution)
방법1. mysql>SET GLOBAL log_bin_trust_function_creators = 1;
- 단.. MySQL 재구동 시 초기화 됨
방법2. MySQL 데몬 구동 시 옵션 삽입
#/usr/bin/mysqld_safe --log-bin-trust-function-creators=1 --user=mysql &
- DB 재구동이 필요할 때 매번 위와 같이 입력하기 힘드므로, alias 설정 진행 (선택사항)
ex)
alias dbstart='/usr/bin/mysqld_safe --log-bin-trust-function-creators=1 --user=mysql &'
alias dbstop='service mysqld stop'
alias dbrestart='/usr/bin/mysqladmin -u root -p reload'
- 서버 재구동 시 자동으로 DB가 시작되게 하려면.. (선택사항)
/etc/rc.local 파일에 아래 내용 추가
/usr/bin/mysqld_safe --log-bin-trust-function-creators=1 --user=mysql &
※ 기존에 /etc/init.d/mysqld 가 구동 중인 상태였다면 ntsysv 실행 후 mysqld 체크 해제 필요
(Check)
mysql>show global variables like 'log_bin_trust_function_creators';
log_bin_trust_function_creators 값이 ON 으로 나오는지 확인