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 vielleicht 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, lockern Sie die Prüfung auf nicht deterministische 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:
LESET SQL-DATEN:
NO SQL:
CONTAINS 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.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3