Heim > Datenbank > MySQL-Tutorial > Hauptteil

Warum gibt MySQL einen Fehler bezüglich deterministischer Funktionen aus, wenn die binäre Protokollierung aktiviert ist?

Mary-Kate Olsen
Freigeben: 2024-10-31 15:31:02
Original
601 Leute haben es durchsucht

Why Does MySQL Throw an Error About Deterministic Functions When Binary Logging is Enabled?

MySQL-Fehler: „Diese Funktion enthält weder DETERMINISTISCH noch KEIN SQL oder liest SQL-Daten in ihrer Deklaration und die binäre Protokollierung ist aktiviert“

Beim Versuch, eine Datenbank in MySQL zu importieren, kann ein Fehler auftreten, der darauf hinweist, dass einer Funktion in ihrer Deklaration eine der folgenden Deklarationen fehlt: DETERMINISTISCH, KEIN SQL oder LESEN SQL-DATEN. Dieser Fehler tritt auf, wenn die binäre Protokollierung aktiviert ist.

Behebung des Fehlers:

Dieser Fehler kann auf zwei Arten behoben werden:

  1. MySQL-Konsole konfigurieren:Führen Sie den folgenden Befehl in der MySQL-Konsole aus:

    SET GLOBAL log_bin_trust_function_creators = 1;
    Nach dem Login kopieren
  2. Konfigurationsdatei bearbeiten:Fügen Sie die folgende Zeile hinzu zur mysql.ini-Konfigurationsdatei:

    log_bin_trust_function_creators = 1;
    Nach dem Login kopieren

Diese Änderungen ermöglichen die Verwendung nichtdeterministischer Funktionen mit binärer Protokollierung. Wenn die Binärprotokollierung jedoch deaktiviert ist, haben diese Einstellungen keinen Einfluss auf den Fehler.

Funktionsdeklarationen verstehen:

  • DETERMINISTISCH: Zeigt an dass eine Funktion immer das gleiche Ergebnis für die gleichen Eingabeparameter liefert.
  • NICHT DETERMINISTISCH: Bedeutet das Gegenteil, dass das Ergebnis einer Funktion für die gleichen Eingabeparameter variieren kann.
  • LESET SQL-DATEN: Gibt explizit an, dass eine Funktion nur Daten aus Datenbanken liest.
  • KEIN SQL: Gibt an, dass eine Funktion keine SQL-Anweisungen enthält.
  • ENTHÄLT SQL: Zeigt an, dass eine Funktion SQL-Anweisungen enthält, aber keine Daten ändert.

Es ist wichtig zu beachten, dass Funktionen, die nicht deterministische Anweisungen enthalten, wie NOW() oder UUID(), sollten als NICHT DETERMINISTISCH deklariert werden. Darüber hinaus sind auch Funktionen, die Daten aus einem nicht replizierten Schema lesen, nicht deterministisch.

Best Practices:

Der ideale Ansatz besteht darin, deterministische Deklarationen für gespeicherte Funktionen zu verstehen und zu nutzen da sie bei der Replikationsoptimierung helfen. MySQL empfiehlt, eine der genannten Deklarationen explizit in der Definition gespeicherter Funktionen anzugeben, um mögliche Fehler zu vermeiden.

Das obige ist der detaillierte Inhalt vonWarum gibt MySQL einen Fehler bezüglich deterministischer Funktionen aus, wenn die binäre Protokollierung aktiviert ist?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!