Heim >Datenbank >MySQL-Tutorial >Wie löst man den Fehler „1418 (HY000) Diese Funktion enthält weder DETERMINISTISCH noch KEIN SQL oder liest SQL-Daten in ihrer Deklaration und binäre Protokollierung ist aktiviert' in MySQL?
Beim Importieren einer MySQL-Datenbank kann in Zeile 10185 der Fehler „1418 (HY000)“ auftreten: Diese Funktion enthält weder DETERMINISTISCH noch KEIN SQL oder liest SQL-Daten in ihrer Deklaration und Die binäre Protokollierung ist aktiviert (Sie möglicherweise möchten die weniger sichere Variable log_bin_trust_function_creators verwenden).“ Dieser Fehler tritt auf, wenn Sie die deterministische Natur einer Funktion in der Datenbank nicht angegeben haben.
Um diesen Fehler zu beheben, können Sie eine von zwei Methoden verwenden:
Methode 1: Vorübergehend Binärprotokollierung deaktivieren
SET GLOBAL log_bin_trust_function_creators = 1;
Methode 2: Konfigurieren Sie die mysql.ini-Datei
log_bin_trust_function_creators = 1;
Indem Sie diesen Wert auf 1 setzen, entspannen Sie die Überprüfung auf nichtdeterministische Funktionen. Diese Option sollte mit Vorsicht verwendet werden, da sie möglicherweise die Integrität Ihrer Daten gefährden kann.
Deterministische Funktionen verstehen
Um diesen Fehler in Zukunft zu vermeiden, gibt es einen besseren Ansatz besteht darin, deterministische Deklarationen für gespeicherte Funktionen zu verwenden. Diese Deklarationen informieren MySQL darüber, ob die Funktion für dieselben Eingabeparameter immer das gleiche Ergebnis liefert. Hier sind die verschiedenen deterministischen Deklarationen:
DETERMINISTISCH:
NICHT DETERMINISTISCH:
LESEN SQL-DATEN:
KEIN SQL:
ENTHÄLT SQL:
Auswahl der richtigen Deklaration
Auswahl der richtigen Die Deklaration einer Funktion hängt von ihrem Verhalten ab. Wenn die Ausgabe der Funktion von datenbankexternen Faktoren wie der aktuellen Uhrzeit oder einem Zufallszahlengenerator abhängt, sollte sie als NICHT DETERMINISTISCH deklariert werden. Wenn die Funktion nur Daten liest, kann sie als READS SQL DATA deklariert werden. Wenn die Funktion keine SQL-Anweisungen enthält, kann sie als NO SQL deklariert werden.
Das obige ist der detaillierte Inhalt vonWie löst man den Fehler „1418 (HY000) Diese Funktion enthält weder DETERMINISTISCH noch KEIN SQL oder liest SQL-Daten in ihrer Deklaration und binäre Protokollierung ist aktiviert' in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!