본문 바로가기
MySQL 에러 처리법

3.Trigger 관련 에러 처리법

by 모모레 2010. 4. 7.

1. MySQL 5.1 이상 서버에서 Trigger 생성이 안되는 경우 처리법
일반적으로 SUPER권한을 가지지 않은 account의 경우 다음과 같은 에러가 발생할 수 있다.

Error Code : 1419
You do not have the SUPER privilege and binary logging is enabled
(you *might* want to use the less safe log_bin_trust_function_creators variable)
(0 ms taken)

에러를 발생하는 계정이 TRIGGER 권한을 가지고 있어도, 트리거 생성을 못하는 경우인것인데,
이것은 바로 위의 로그에서도 나왔듯이 log_bin_trust_function_creators 속성 때문에 발생한 것이다.

아마 확인하면 이 variable의 속성값이 OFF로 나타날 것이다.
이 속성은 MySQL 이 stored function과 trigger 생성에 제약을 강제할 수 있는 기능을 가진 속성으로
OFF 로 설정되면 TRIGGER권한을 가지고 있어도 생성할 수가 없다.

log_bin_trust_function_creators 값은 default가 OFF 이다.

하지만, 이 옵션을 enable하게 되면 MySQL 입장에서 function에 대한 안정성 체크를 하지 않게 된다.


해결법:

1. 안정성 체크는 내가 한다. 파라메터를 수정한다.
log_bin_trust_function_creators 속성을 ON으로 해주면 일반 계정으로도 생성이 가능하므로, 수정해 주도록 한다.
dynamic하게 수정이 가능하므로 서버를 restart할 필요는 없다.

mysql> set global  log_bin_trust_function_creators = on;

2. 생성 작업을 하는 계정에 super권한을 주고 생성한다.



참고:
log-bin-trust-routine-creators 설정은 이전 버젼에 있는 것으로 같은 기능을 수행하는 것이기는 하나 현재 최신 버젼에는 deprecate되었다.