DETERMINISTISCH, KEIN SQL oder LEST SQL-DATEN in der Funktionsdeklaration mit aktivierter Binärprotokollierung
Beim Versuch, eine Datenbank in MySQL zu importieren, wurde ein Es kann eine Fehlermeldung auftreten, die darauf hinweist, dass einer Funktion eine der folgenden Deklarationen in ihrer Deklaration fehlt und die binäre Protokollierung aktiviert ist:
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)
Problem lösen
Es gibt zwei Methoden zur Behebung dieses Problems:
SET GLOBAL log_bin_trust_function_creators = 1;
log_bin_trust_function_creators = 1;
Dies erleichtert die Prüfung auf nicht deterministische Funktionen, also Funktionen, die Daten ändern.
Deterministische Deklarationen verstehen
Deterministische Funktionen erzeugen immer das gleiche Ergebnis für die gleichen Eingabeparameter, nichtdeterministische Funktionen hingegen nicht. MySQL verwendet diese Deklarationen während der Replikationsoptimierung.
Arten deterministischer Deklarationen
Es stehen mehrere Arten deterministischer Deklarationen zur Verfügung:
Best Practice
Es wird empfohlen, deterministische Deklarationen für gespeicherte Daten ordnungsgemäß anzugeben Funktionen zur Gewährleistung einer optimalen Replikation und Datenintegrität. Indem Sie die Art der Funktion sorgfältig abwägen und die entsprechenden Deklarationen verwenden, können Sie Fehler verhindern und die Datenbankleistung optimieren.
Das obige ist der detaillierte Inhalt vonWarum gibt meine MySQL-Funktion den Fehler „1418 (HY000)' in Bezug auf deterministische Deklarationen aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!