집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 \'DETERMINISTIC, NO SQL 또는 READS SQL DATA\' 오류가 발생하는 이유는 무엇입니까?
오류 이해: "DETERMINISTIC, NO SQL 또는 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 설명서는 다양한 함수 및 저장 프로시저 함수 선언 옵션에 대한 포괄적인 가이드를 제공하므로 각각에 대해 정보를 바탕으로 결정을 내릴 수 있습니다. 기능. 잘못된 선언은 실행 계획과 성과에 영향을 미칠 수 있습니다.
위 내용은 MySQL에서 \'DETERMINISTIC, NO SQL 또는 READS SQL DATA\' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!