Heim  >  Artikel  >  Datenbank  >  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?

Linda Hamilton
Linda HamiltonOriginal
2024-11-01 10:44:30986Durchsuche

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 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:

  • Funktionen, die bei gleichen Eingabeparametern immer das gleiche Ergebnis liefern.

NICHT DETERMINISTISCH:

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

LESEN SQL-DATEN:

  • Funktionen, die nur Daten aus Datenbanken lesen.

KEIN SQL:

  • Funktionen, die keine SQL-Anweisungen enthalten.

ENTHÄLT 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.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn