DBAtlas · 데이터베이스 운영 아틀라스

1418: Function has none of DETERMINISTIC, NO SQL, or READS SQL DATA (binary logging enabled) (함수에 DETERMINISTIC, NO SQL, READS SQL DATA 중 어느 것도 없음)

MySQL

의미

저장 함수를 생성하는 중이지만 binary logging이 활성화되어 있고 함수에 결정성/데이터 접근 특성이 하나도 선언되지 않았다. 복제 안전성 측면에서 모호하므로 MySQL이 이런 함수를 거부한다.

원인

log_bin이 ON이고 log_bin_trust_function_creators=OFF인 상태에서 DETERMINISTIC, NO SQL, READS SQL DATA 특성 없이 함수를 정의했다. 이 특성이 없으면 MySQL은 함수가 replica에서 같은 결과를 낸다고 확신할 수 없다.

해결 방법

올바른 특성으로 함수의 동작을 선언한다: 실제로 결정적이면 DETERMINISTIC, 데이터에 접근하지 않으면 NO SQL, 읽기만 하면 READS SQL DATA를 추가한다. 함수가 안전하다고 확신한다면 중앙 정책으로 log_bin_trust_function_creators=1을 설정할 수 있지만, 특성을 올바르게 선언하는 것이 가장 안전한 방법이다. 특성이 함수의 실제 동작과 일치하는지 확인한다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목