> 데이터 베이스 > MySQL 튜토리얼 > 바이너리 로깅이 활성화된 경우 MySQL에서 결정적 함수에 대한 오류가 발생하는 이유는 무엇입니까?

바이너리 로깅이 활성화된 경우 MySQL에서 결정적 함수에 대한 오류가 발생하는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-10-31 15:31:02
원래의
685명이 탐색했습니다.

Why Does MySQL Throw an Error About Deterministic Functions When Binary Logging is Enabled?

MySQL 오류: "이 함수의 선언에는 DETERMINISTIC, NO SQL 또는 READS SQL DATA가 없으며 바이너리 로깅이 활성화되었습니다."

데이터베이스를 MySQL로 가져오려고 하면 함수 선언에 DETERMINISTIC, NO SQL 또는 READS SQL DATA 선언 중 하나가 부족함을 나타내는 오류가 발생할 수 있습니다. 이 오류는 바이너리 로깅이 활성화될 때 발생합니다.

오류 해결:

이 오류는 두 가지 방법으로 해결할 수 있습니다:

  1. MySQL 콘솔 구성: MySQL 콘솔에서 다음 명령을 실행합니다.

    SET GLOBAL log_bin_trust_function_creators = 1;
    로그인 후 복사
  2. 구성 파일 편집: 다음 줄을 추가합니다. mysql.ini 구성 파일에:

    log_bin_trust_function_creators = 1;
    로그인 후 복사

이러한 수정을 통해 비결정적 기능을 바이너리 로깅과 함께 사용할 수 있습니다. 그러나 바이너리 로깅이 비활성화된 경우 이러한 설정은 오류에 영향을 미치지 않습니다.

함수 선언 이해:

  • 결정: 함수는 동일한 입력 매개변수에 대해 항상 동일한 결과를 생성합니다.
  • NOT DETERMINISTIC: 반대를 나타냅니다. 즉, 동일한 입력 매개변수에 대해 함수의 결과가 달라질 수 있습니다.
  • SQL 데이터 읽기: 함수가 데이터베이스의 데이터만 읽도록 명시적으로 지정합니다.
  • NO SQL: 함수에 SQL 문이 포함되어 있지 않음을 나타냅니다.
  • CONTAINS SQL: 함수에 SQL 명령이 포함되어 있지만 데이터는 수정되지 않음을 나타냅니다.

비결정적 명령이 포함된 함수는 NOW() 또는 UUID()와 같은 형식은 NOT DETERMINISTIC으로 선언되어야 합니다. 또한 복제되지 않은 스키마에서 데이터를 읽는 함수도 비결정적입니다.

모범 사례:

이상적인 접근 방식은 저장된 함수에 대한 결정적 선언을 이해하고 활용하는 것입니다. 복제 최적화에 도움이 되기 때문입니다. MySQL은 잠재적인 오류를 방지하기 위해 저장된 함수 정의에서 언급된 선언 중 하나를 명시적으로 지정할 것을 권장합니다.

위 내용은 바이너리 로깅이 활성화된 경우 MySQL에서 결정적 함수에 대한 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿