Heim > Datenbank > MySQL-Tutorial > Warum gibt meine MySQL-Funktion den Fehler „1418 (HY000)' in Bezug auf deterministische Deklarationen aus?

Warum gibt meine MySQL-Funktion den Fehler „1418 (HY000)' in Bezug auf deterministische Deklarationen aus?

DDD
Freigeben: 2024-11-02 12:22:30
Original
230 Leute haben es durchsucht

Why Does My MySQL Function Throw a

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)
Nach dem Login kopieren

Problem lösen

Es gibt zwei Methoden zur Behebung dieses Problems:

  1. Führen Sie Folgendes in der MySQL-Konsole aus:
SET GLOBAL log_bin_trust_function_creators = 1;
Nach dem Login kopieren
  1. Fügen Sie Folgendes zur Konfigurationsdatei mysql.ini hinzu:
log_bin_trust_function_creators = 1;
Nach dem Login kopieren

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:

  • DETERMINISTISCH: Deklariert die Funktion als deterministisch.
  • NICHT DETERMINISTISCH: Deklariert die Funktion als nicht deterministisch.
  • LESET SQL-DATEN: Deklariert, dass die Funktion nur Daten aus Datenbanken liest.
  • KEIN SQL: Deklariert, dass die Funktion keine SQL-Anweisungen enthält.
  • ENTHÄLT SQL: Deklariert, dass die Funktion SQL-Anweisungen enthält, aber keine Daten liest oder schreibt.

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage