오류 이해: "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)
이 오류는 정의된 함수 또는 저장 프로시저의 정의에 다음 선언 중 하나가 부족함을 나타냅니다.
MySQL에서 바이너리 로깅이 활성화되면 데이터 무결성과 복제 일관성을 보장하기 위해 이러한 선언이 필요합니다.
오류 수정
이 문제를 해결하려면 다음 두 가지 방법 중 하나를 활용할 수 있습니다.
log_bin_trust_function_creators 변수를 활성화합니다.
MySQL 콘솔에서 다음 명령을 실행합니다:
SET GLOBAL log_bin_trust_function_creators = 1;
또는 MySQL 구성 파일에 다음을 추가합니다. (예: mysql.ini):
log_bin_trust_function_creators = 1;
이 설정을 활성화하면 바이너리 로깅 중에 명시적인 선언 없이 함수가 실행될 수 있습니다.
함수 또는 프로시저에 적절한 선언을 추가합니다.
동일한 입력 매개변수에 대해 항상 동일한 출력을 생성하는 함수의 경우 다음을 사용합니다. 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