"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > MySQL에서 \"DETERMINISTIC, NO SQL 또는 READS SQL DATA\" 오류가 발생하는 이유는 무엇입니까?

MySQL에서 \"DETERMINISTIC, NO SQL 또는 READS SQL DATA\" 오류가 발생하는 이유는 무엇입니까?

2024년 11월 13일에 게시됨
검색:214

Why Do I Get the \

오류 이해: "DETERMINISTIC, NO SQL, or READS SQL DATA" 선언 요구 사항

MySQL로 데이터베이스를 가져올 때 다음이 가능합니다. 다음 오류가 발생합니다.

1418 (HY000) at line 10185: 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)

이 오류는 정의된 함수 또는 저장 프로시저의 정의에 다음 선언 중 하나가 부족함을 나타냅니다.

  • DETERMINISTIC
  • NO SQL
  • SQL 데이터 읽기

MySQL에서 바이너리 로깅이 활성화되면 데이터 무결성과 복제 일관성을 보장하기 위해 이러한 선언이 필요합니다.

오류 수정

이 문제를 해결하려면 다음 두 가지 방법 중 하나를 활용할 수 있습니다.

  1. log_bin_trust_function_creators 변수를 활성화합니다.

    • MySQL 콘솔에서 다음 명령을 실행합니다:

      SET GLOBAL log_bin_trust_function_creators = 1;
    • 또는 MySQL 구성 파일에 다음을 추가합니다. (예: mysql.ini):

      log_bin_trust_function_creators = 1;

    이 설정을 활성화하면 바이너리 로깅 중에 명시적인 선언 없이 함수가 실행될 수 있습니다.

  2. 함수 또는 프로시저에 적절한 선언을 추가합니다.

    • 동일한 입력 매개변수에 대해 항상 동일한 출력을 생성하는 함수의 경우 다음을 사용합니다. DETERMINISTIC 선언. 예:

      CREATE FUNCTION my_function() DETERMINISTIC
      BODY
       -- Your function logic
      END
    • SQL 문이 포함되지 않은 함수의 경우 NO SQL 선언을 사용합니다.

      CREATE FUNCTION my_function() NO SQL
      BODY
       -- Your function logic
      END
    • 데이터베이스에서 데이터만 읽는 함수의 경우 READS SQL DATA 선언을 사용합니다.

      CREATE FUNCTION my_function() READS SQL DATA
      BODY
       -- Your function logic
      END

결정적 함수 선언 이해

비결정적 함수는 데이터를 수정하거나 예측할 수 없는 입력을 사용할 수 있어 결과가 다를 수 있습니다. 동일한 입력 매개변수에 대한 결과입니다. 따라서 성능을 최적화하고 데이터 무결성을 보장하려면 함수 동작을 정확하게 선언하는 것이 중요합니다.

MySQL 문서는 다양한 함수 및 저장 프로시저 함수 선언 옵션에 대한 포괄적인 가이드를 제공하므로 각각에 대해 정보를 바탕으로 결정을 내릴 수 있습니다. 기능. 잘못된 선언은 실행 계획과 성과에 영향을 미칠 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3