„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

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?

Veröffentlicht am 16.11.2024
Durchsuche:925

How to Solve the \

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:

  • Funktionen, die immer das gleiche Ergebnis für die gleichen Eingabeparameter erzeugen.

NICHT DETERMINISTISCH:

  • Funktionen, die nicht immer das gleiche Ergebnis für die gleichen Eingabeparameter liefern. Wenn nicht explizit deklariert, verwendet MySQL standardmäßig NICHT DETERMINISTISCH.

LESET SQL-DATEN:

  • Funktionen, die nur Daten aus Datenbanken lesen.

NO SQL:

  • Funktionen, die keine SQL-Anweisungen enthalten.

CONTAINS SQL:

  • Funktionen, die SQL-Anweisungen enthalten, aber weder Daten lesen noch schreiben.

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.

Neuestes Tutorial Mehr>

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