(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 으로 나오는지 확인




    Posted by sybd